我想用socket做一个聊天的工具,现碰到三个问题望各位大哥们帮帮忙,小弟万分感谢!问题一:服务断如何向指定的客户端发送信息,例如192.168.0.1是服务端(ServerSocket1),而192.168.0.2和192.168.0.3是客户端,如果服务端只向192.168.0.2这台机器发送信息该如何实现!(我在网上看的例子都是群发给客户端的,不是发给指定客户端,我想能不能通过指定客户端ip直接向某一台客户端发信息,如何实现)
问题二:如果我想用客户端直接发信息给客户端 例如 192.168.0.2直接发给192.168.0.3该如何实现(我想是不是应该先发送给服务端,在由服务端转发给另一台客户端呢?具体该如何实现),给个思路也行!
问题三:客户端如何能够得到所有连接到服务端IP(我在服务端已经可以实现了,但我不知道客户端如何实现),其实我的目的是想在客户端能够即时查看所有在线用户!以上三个问题困扰小弟很多天了,麻烦各位大哥指教,小弟万分感谢!
问题二:如果我想用客户端直接发信息给客户端 例如 192.168.0.2直接发给192.168.0.3该如何实现(我想是不是应该先发送给服务端,在由服务端转发给另一台客户端呢?具体该如何实现),给个思路也行!
问题三:客户端如何能够得到所有连接到服务端IP(我在服务端已经可以实现了,但我不知道客户端如何实现),其实我的目的是想在客户端能够即时查看所有在线用户!以上三个问题困扰小弟很多天了,麻烦各位大哥指教,小弟万分感谢!
I: Integer;
begin
ServerSocket1.Socket.Lock;
try
for I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
if ServerSocket1.Socket.Connections[i].RemoteAddress = '192.168.0.2' then
ServerSocket1.Socket.Connections[i].SendText(MessageText);
finally
ServerSocket1.Socket.Unlock;
end;
end;问题二
正如楼主说的,先发一个命令告诉服务器,要发送给谁,服务器再用问题一的解决代码来发送问题三
发送一个命令给服务器,服务器根据命令要求,把列表发送客户端
呵,之前我也想过用你这种方法来实现,但问题二用你所说的问题一来解决,如果客户端有几百台电脑的话用循环来判断那服务器负荷非常重,特别是当上百台电脑同时通信的时候服务器该如何响应呢?能不能不用通过循环判断而直接发送呢?麻烦再帮我想想,万分感谢!