现在看了很多帖子,关于IdTcpServer的问题。但是都说它是什么不能主动发消息给客户端,就是在它得OnExcute中实现AThread.Connection.socket.Writeln('要发送得数据').没有一个象样得源代码。(要不就是去那个什么英文网站看demo)。可是我英文水平有限啊。所以在这里再次发帖。
我的问题是这样的:
我做了一个TCPServer服务器,有多个客户端和我进行连接,并且我把这些客户端的IP和Port都记录下来了。代表它们上线了。一旦下线我就会把相应得IP和Port删除。我想得到的答案:在我注意我的服务器端时,可能有若干在线客户端在线,所以,我想主动发送一些消息给我选择得客户端。当我选择我要发送得客户端时会弹出一个窗口,在窗口上面有一个TMemo和一个TButton,TMemo用来书写我要发送的消息,TButton代表我点击它时发送TMemo中的数据给我要发送的那个客户端。注意:希望高手们给出我源代码,怎么样实现我得服务器主动的发消息给我对应的客户端。再次谢谢。
我的问题是这样的:
我做了一个TCPServer服务器,有多个客户端和我进行连接,并且我把这些客户端的IP和Port都记录下来了。代表它们上线了。一旦下线我就会把相应得IP和Port删除。我想得到的答案:在我注意我的服务器端时,可能有若干在线客户端在线,所以,我想主动发送一些消息给我选择得客户端。当我选择我要发送得客户端时会弹出一个窗口,在窗口上面有一个TMemo和一个TButton,TMemo用来书写我要发送的消息,TButton代表我点击它时发送TMemo中的数据给我要发送的那个客户端。注意:希望高手们给出我源代码,怎么样实现我得服务器主动的发消息给我对应的客户端。再次谢谢。
Count := Clients.lockList.Count;
finally
Clients.UnlockList;
end;
try
EnterCriticalSection(CS);
for I := 0 to Count - 1 do
try
RecClient := Clients.LockList.Items[i];
Recthread := RecClient.Thread;
sendStr :='发送的内串';
if Recthread.Connection.Connected then
Recthread.Connection.WriteLn(sendStr);
end;
finally
Clients.UnlockList;
end;
finally
LeaveCriticalSection(CS);
end;