本人刚学indy TCP Server,疑惑一个问题:Server能判断是哪个IP发的数据吗?
本人刚学indy TCP Server,疑惑一个问题:Server能判断是哪个IP发的数据吗?
比如a,b,c三台client给Server发信息,如果是a,就回复奖励100,是b,就奖励200,c就不回复。
Server能判断是那台client吗?是不是a,b,c给Server发数据必须包含自己的身份信息,让Server解析后判断?
[解决办法]
不需要的,TCPServer为每一个客户端连接单独建立了一个线程。
[解决办法]
TCPSERVER 可以取出每个客户端的IP。
[解决办法]
PeerIP就是对方的IP地址,绑定IP地址会有问题,因为现在都用DHCP,IP地址有可能会变,最好在协议中定身份信息。
[解决办法]
procedure Send(AThread: TIdTCPClient; str: string);beginif form1.IdTCPClient1.Connected then beginAThread.WriteLn(str);end;//A机Send(AThread,'a');procedure TForm2.IdTCPServer1Execute(AThread: TIdPeerThread);var str: string;begin try str := AThread.Connection.Readln(); except end; // if str = ‘a’ then begin AThread.Connection.Writeln('100'); end;if str = ‘b’ then begin AThread.Connection.Writeln('200'); end;if str = ‘c’ then begin // end;end;
[解决办法]
如果a,bc都是固定IP可以通过peerip如果不是则需要发送身份信息
[解决办法]
AContext.Connection.IOHandler.Readln