导航

心动吧DELPHI网络书

自发研究:须要多维思想而且要想不可能为可能的人才能做到

« 为什么在线程中调用时间控件会不执行呢?键盘鼠标对应码表-delphi键值 »

利用ServerSocket和ClientSocket实现简单通讯

开始这前,在你的窗口中放入ServerSocket和ClientSocket控件。



ServerSocket的控件属性

threadcachsize:创建服务器线程的最大数目。

port:确定服务器的监视端口。

service:客户通过此属性来识别服务器端口。

ClientSocket的控件属性

Socket:此属性参数是应用程序之间通信的端点。

Address:此属性参数为字符串类型,客户端确定服务器端的IP地址。 Host:服务器端的主机名称。

Post:服务器端的监视端口。

Servce:用来识别服务器端口。

Active:确定Socket是否可用(true表示可用)。

ClientType:指定客户机采用哪一种方式(异步/同步)来通信。

ServerSocket的事件

onclientconnect:客户与服务器连接且服务器接收申请后,产生此事件。 onclientdisconnect:当和服务器连接的某一个客户机关闭连接后产生此事件。

onGetSocket:一个服务器可以接收多个客户Socket的连接申请。 onGetThread:当ClientType属性值设为StrThreadBlocking时,服务器会产生一个单独的线程来与客户的连接。

onAccept:服务器接收客户的连接申请后,产生此事件。

onClientRead:客户机发送数据到服务器时产生的事件。

ClentSocket事件

onConnect:当客户端与服务器端连接上后,产生此事件。

onConnecing:当客户端与服务器端进行连接操作时,产生此事件。 onDisconnect:当客户端关闭操作后产生此事件。

onError:在客户与服务器在建立和通信过程中,如果产生错误时,产生此事件。

onLookup:当客户在计算机网络中寻找服务器时,产生此事件。

onRead:数据到达时产生此事件。




1. 建立连接



服务器端:

ServerSocket.Port:=9999 //你想要设置的监听端口

ServerSocket.open;//开始监听



服务器端至此一直在监听9999端口,若客户端有连接请求,则OnAccept事件被激活。procedure TForm1.ServerSocketAccept(Sender: TObject;Socket: TCustomWinSocket);

begin

//连接被接受时的代码。

end;



客户端:



ClientSocket.Host := Server;//设置主机名

//或设置服务器端地址ClientSocket.address:=服务器端地址

ClientSocket.Port:=9999;

ClientSocket.Active := True;//请求建立连接。



2. 通信



客户端:

clientsocket.Socket.SendText(’所发送的信息’);//通过调用该函数发送信息



客户端接收来自服务器端的信息

procedure TForm1.ClientSocket2Read(Sender:TObject;Socket:TCustomWinSocket);

begin

Edit2.Text:=socket.ReceiveText;//得到服务器端发来的信息

end;



服务器端:



服务器端收到客户端发来的信息,则会激活ServerSocketClientRead事件,通过ServerSocket的Socket.ReceiveText可以得到信息的内容。



procedure TForm1.ServerSocketClientRead(Sender:TObject;Socket:TCustomWinSocket);

begin

Edit1.Text:=Socket.ReceiveText;//得到客户端发来的信息

end;



服务器端向客户发送信息用ServerSocket.socket.connections[0].sendtext(’信息内容’);



3. 关闭连接



客房端通过ClientSocket.close关闭连接。



服务器将激活OnDisconnect事件

procedure TForm1.ServerSocketClientDisconnect(Sender: TObject;Socket:TCustomWinSocket);

begin

ServerSocket.Active := False;//服务器关闭监听

end

 

原创文章如转载,请注明:转载自心动吧DELPHI网络书 [ http://www.abcxd.com/delphi/ ]

本文链接地址:http://www.abcxd.com/delphi/abcxddelphi/DELPHITS/334/

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

搜索内容

日历

Copyright ⊙ 2004-2009 心动吧 UrL:ABCXD.CoM All RiGhts Reserved