WinSock是一组用C语言写的API,用于通过Internet进行数据传输。通过WinSock编程可以获得更大的灵活性。编写WinSock应用程序本来是很麻烦的,不过,在C++ Builder 5.0中,您并不需要直接与WinSock中的API打交道,因为C++ Builder 5.0新增加了TClientSocket控件和TserverSocket控件,这两个控件封装了Windows的有关API,使得对WinSock的访问大大简化。用Socket 建立的连接是建立在TCP/IP协议基础上的,同时也支持其它相关的协议,如XNS、DECnet以及 IPX/SPX等。Socket的连接必须要建立有一个服务器端(Server)和一个客户端(Client)。在C++ Builder 5.0中分别用TClientSocket控件和TServerSocket控件来操纵客户端Socket与服务器端Socket的 连接和通信。这两个控件用于管理服务器和客户的连接,它们本身并不是Socket对象,操纵 Socket对象的是TCustomWinSocket及其派生类,如TClientWinSocket、TserverWinSocket . TServerClientWinSocket等。
Socket之间的连接可以分为三种类型:客户端连接、监听连接以及 服务器端连接,所谓客户端连接,是指由客户端的Socket提出连接请求,要连接的目标是服务 器端的Socket。为此,客户端的Socket必须首先描述它要连接的服务器端Socket(主要是指服务器 端Socket的地址和端口号),然后再定位所要连接的服务器端Socket,找到以后,就向服务器端 Socket请求连接。当然,服务器端的Socket此时未必正好处于准备好状态,不过,服务器端的 Socket会自动维护客户请求连接的队列,然后在它认为合适的时候向客户端Socket发出“允许连接” (Accept)的信号,这时客户端Socket与服务器端Socket的连接就建立了。所谓监听连接,服务器端 Socket并不定位具体的客户端Socket,而是处于等待连接的状态。当服务器端Socket监听到或者说 接收到客户端Socket的连接请求,它就响应客户端Socket的请求建立一个新的Socket句柄并与客户 端连接,而服务器端Socket继续处于监听状态,还可以接收其它客户端Socket的连接请求。所谓服 务器端连接,是指当服务器端Socket接收到客户端Socket的连接请求后,就把服务器端Socket的描述 发给客户端,一旦客户端确认了此描述,连接就建立了。在本文中的聊天程序用的就是监听连接, 即服务器设置连接个数后进行监听,客户端进行对服务器端的连接,这样就可以进行相互通信了。
二.TServerSocket和TClientSocket控件的属性
1.ServerSocket的控件属性
threadcachsize:创建服务器线程的最在数目。
port:确定服务器的监视端口。
service:客户通过此属性来识别服务器端口。
2.ClientSocket的控件属性
Socket:此属性参数是应用程序之间通信的端点。
Address:此属性参数为字符串类型,客户端确定服务器端的IP地址。
Host:服务器端的主机名称。
Post:服务器端的监视端口。
Servce:用来识别服务器端口。
Active:确定Socket是否可用(true表示可用)。
ClientType:指定客户机采用哪一种方式(异步/同步)来通信。
三.ServerSocket和ClientSocket控件的事件
1.ServerSocket的事件
onclientconnect:客户与服务器连接且服务器接收申请后,产生此事件。
onclientdisconnect:当和服务器连接的某一个客户机关闭连接后产生此事件。
onGetSocket:一个服务器可以接收多个客户Socket的连接申请。
onGetThread:当ClientType属性值设为StrThreadBlocking时,服务器会产生一个单独的线程来与客户的连接。
onAccept:服务器接收客户的连接申请后,产生此事件。
onClientRead:客户机发送数据到服务器时产生的事件。
2.ClentSocket事件
onConnect:当客户端与服务器端连接上后,产生此事件。
onConnecing:当客户端与服务器端进行连接操作时,产生此事件。
onDisconnect:当客户端关闭操作后产生此事件。
onError:在客户与服务器在建立和通信过程中,如果产生错误时,产生此事件。
上一页 下一页






