当有多用户连接ServerSocket1,时。用什么标志判断谁谁。(10分)

  • 主题发起人 主题发起人 asmcos
  • 开始时间 开始时间
A

asmcos

Unregistered / Unconfirmed
GUEST, unregistred user!
大家看看,谢谢,最好给点提示程序
 
什么意思?什么叫“用什么标志判断谁谁?”

ServerType:= stNonBlocking 时(非阻塞)
ServerSocket1.Socket.Connections.Addr;

如果是多线程阻塞式
那么每个线程自己能得到Client的ip.也可以
在事件OnGetThread中得到 ClientSocket

明白了吗?
别再说让我给你例子,如果你有tcp/ip知识,自己看帮助吧,听详细的。否则给你例子也没用。
 
在SOCKET 的任何事件下都可写入
socket.RemoteAddress;获取对方的IP ,剩下的事情好象就是你所谓的数据标识来区分不同
联结用户了吧/
const MAXRemote=16; //假设联结用户数
var Remote:array[1..MAXRemote] of string;
function Tfrm_main.Get_RemotIP(ASCK:TCustomWinSocket):byte;
var i:byte;
BEGIN
Result:=0;
for i:=0 to MAXRemote-1 do
begin
if Remote.IP = ASCK.RemoteAddress then
begin
Result:=i;
Break;
end
end;
END
procedure Tfrm_main.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
var i:byte;
begin
i:=Get_RemotIP(Socket);
showmessage(socket.RemoteAddress+':断开联结!!!');
Remote.IP:=socket.RemoteAddress;
end;

procedure Tfrm_main.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
var i:byte;
begin
i:=Get_RemotIP(Socket);
Server.IP:=socket.RemoteAddress;
showmessage(socket.RemoteAddress+':联结成功!!!');
end;
 
连接的客户端是用 每个连接的句柄(HANDLE )和CONNECTIONS来标识的
 
连接的时候弄一个专门的数组,把connecton号和客户端的一些信息关联起来啊
 
接受答案了.
 
后退
顶部