用Indy的TIdTCPServer开发服务器程序时,当有多个客户端为往服务器发送数据时,我要根据不同数据内容作判断,转发到特定的客户端。该如何实现,多谢了!!!!
TIdTCPServer对每一个客户端连接都开了一个新的线程,你只要在这个方法里接收和发送数据就行了。
IdTCPServer1Execute(AThread: TIdPeerThread);
例:接收数据:
AThread.Connection.ReadFromStack;
len1 := AThread.Connection.InputBuffer.Size;
athread.Connection.ReadBuffer(buf,len1);
发送数据:
athread.Connection.WriteBuffer(buf,high(buf1)+1,true);
如果你是想要把一个客户端发来的数据转发到另一个客户端,那么就不是这种单向 C/S模式能够解决的。每个机器同时具有服务器和客户端模式. 如下:
转发服务器 客户机A 客户机B
TCPServer <---- TCPClient
TCPClient --------------> TCPServer
学习.
TThreadList,管理各个客户端线程
看一下demo,里面已经实现了你的功能
跟List一样用,加入了锁定,用的时候首先Locklist