开始这前,在你的窗口中放入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