如何编写用TCP/IP的通讯措施
副标题#e#
最近在网上不绝的看到有人问如何用BCB的TServerSocket和TClientSocket举办编程的问题,所以抉择把我的一些编程履历汇报给各人,让各人可以或许尽快的把握他们的用法。
首先要讲一下他们的一些配置(属性):
TServerSocket 的几个属性
Active
是否是事情状态,可以把它配置为ture或false来启动和遏制侦听。
Port
本机侦听的端口,可以配置为一大于1024的数;
ServerType
处事端的事情方法,有两个选择,一个是stNonBlocking 非阻塞方法,一个是stThreadBlocking线程阻塞方法,默认长短阻塞方法。用非阻塞方法编程较量简朴(我小我私家认为),用阻塞方法对每个毗连必需本身用线程来节制收发。
ThreadCacheSize
缓冲的线程个数 当ServerType是stThreadBlocking时有效。
TClientSocket的几个属性
Active
是否是事情状态,可以把它配置为ture或false来同处事端成立或断开毗连。
Host
处事器(ServerSocket)的计较机名,是一个字符串
Address
处事器(ServerSocket)的IP地点
ClientType
客户端的事情方法一种是ctNonBlocking非阻塞方法,一种是ctBlocking阻塞方法,默认长短阻塞方法
Port
同处事端(ServerSocket)毗连的端口,这个端口就是ServerSocket的侦听端口
在配置ClientSocket的(Host)主机名和配置(Address)IP地点是等效的,但设主机名需要网络具有DNS(域名理会处事)处事器,并且设主机名要比设主机的IP地点毗连的速度慢一些。发起用Address来同ServerSocket举办毗连。
配置好所有的属性后,ServerSocket控件就可以通过将它的Active属性置为true来举办侦听了。ClientSocket可以通过配置它的Active属性来同ServerSocket举办毗连。毗连乐成绩可以举办通讯了。在这个进程中会发生一些事件,下面说说他们各自的事件。
#p#副标题#e#
TServerSocket的几个事件
OnAccept
当一个客户同处事端毗连乐成后发生这个事件,发生这个事件后这个毗连就可用了,可以对这个客户举办发送和吸收数据。
OnClientConnect
当一个客户正在同处事端成立毗连的时候发生此事件,在这里你可以抉择是否接管这个毗连。
OnClientDisconnect
当一个客户同处事端的毗连断开的时候发生此事件,你需要在这里举办一些处理惩罚,如从毗连列表中排除次毗连释放内存等。
OnClientError
当客户同处事端呈现错误时发生此事件,在此事件中你可以通过配置ErrorCode = 0来屏蔽系统的错误提示。这样就可以制止讨厌的英文错误了。按照ErrorEvent的差异的值来得知产生了什么错误,它有一下几中错误范例
eeGeneral 未知错误
eeSend 发送数据呈现错误
eeReceive 吸收数据呈现错误
eeConnect 客户请求毗连时呈现错误
eeDisconnect 客户断开毗连时呈现错误
eeAccept 接管一个客户时产生错误
一般来讲,当产生错误的时候这个客户的毗连就已经不行用了,要对这个客户举办毗连失败处理惩罚。
OnClientRead
当处事端收到客户端发来的数据的时候发生此事件。吸收客户端的数据都在这里举办。
OnClientWrite
当处事端发送数据的时候发生此事件。
TClientSocket的几个事件
OnConnect
同处事端(ServerSocket)毗连乐成后将发生此事件,发生此事件后才说明这个毗连可用了,这时才可以向ServerSocket发送数据。
OnConnecting
正在同处事端举办毗连是发生此事件。
OnDisconnect
同处事端的毗连断开后发生此事件,发生此事件后ClientSocket的Active属性就为false了,这时这个毗连就不行用了,必需从头举办毗连才气向处事器发送数据。
OnError
当Socket产生错误时发生此事件,这个事件的意义和ServerSocket的Error事件完全一样,只是它没有eeAccept错误。
OnRead
当吸收随处事端发来的数据后发生此事件。
OnWrite
当向处事端发送数据的时候发生此事件。
上面先容了一下这两个控件的根基属性和事件,在把握一些要领就可以用这两个控件举办编写通讯措施了,本日写的有写累了,改天在写它的要领并详细利用这两个控件编写一个通讯措施,有两个选择,一个是局域网的谈天措施,一个是局域网内的节制措施,各人喜欢那一个呢?给点发起吧.