socket通信问题

lcc_2004 2005-05-26 10:15:07
serversocket做为服务端和clientsocket连接时
是通过连接数确定是哪个连接的,比如:有3个连接是active的,现在第2个中断了!
那么第3个连接就变为第2个连接了,如果之前第3个连接的client为IP(192.168.0.3)
那么怎么确定现在的第2个连接就是IP为(192.168.0.3)的client呢???
请各个大侠指教!!
...全文
193 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcc_2004 2005-05-27
  • 打赏
  • 举报
回复
不行啊!!!
还有别的办法吗??
wsqwang884 2005-05-27
  • 打赏
  • 举报
回复


有结果没?楼主?
lcc_2004 2005-05-26
  • 打赏
  • 举报
回复
谢谢在下!!
我先试一下!!!
syl79 2005-05-26
  • 打赏
  • 举报
回复
加个TStringList来实现。
var list : TStringList;

procedure TForm1.FormCreate(Sender: TObject);
begin
list := TStringList.Create ();
end;

procedure TForm1.aaaClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
list.Add(socket.RemoteAddress);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
list.Free ();
end;

...

index := list.IndexOf(ServerSocket.Socket.Connections[i].RemoteAddress) + 1;
if index <> 0 then
showmessage ('第'+inttostr (index)+'个连接')
else
showmessage ('未找到');
lcc_2004 2005-05-26
  • 打赏
  • 举报
回复
其中连接中的‘i’是变量的,变化后你能知道是第几个连接吗??
syl79 2005-05-26
  • 打赏
  • 举报
回复
可以根据ServerSocket1.Socket.Connections[i].RemoteAddress判断。
不过还是不建议你那样做,因为ServerSocket在客户端的异常退出的判断方面在很大的错误,如果有一个客户端异常退出的话是立即检查不出来的。还是写线程比较好。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧