ServerSocket 如何控制向不同客户端发信息?

sinozw 2010-12-08 03:16:43
假如有10个ClientSocket, 已经连接到ServerSocket上 。如何向某一个指定的客户端主动发信息?另外是否还有其他更好用的控件?我用的是bcb 6.0
...全文
272 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dajie13 2011-07-04
  • 打赏
  • 举报
回复
我也很像弄明白这个问题,请详细一点,最好有点什么资料
留个邮箱吧:521011655@qq.com
wgh0306 2010-12-09
  • 打赏
  • 举报
回复
这个问题,我也需要解决。
xuzhu3000 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 silverpot 的回复:]
引用 6 楼 xuzhu3000 的回复:

if(ServerSocket1->Socket->Connections[i]->RemoteHost.AnsiCompare("####") == 0)
不太懂


区别不同客户端,可以用客户端IP或是客户端主机名。我那个####就是表示你指定的主机名
[/Quote]
3Q~
银点 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xuzhu3000 的回复:]

if(ServerSocket1->Socket->Connections[i]->RemoteHost.AnsiCompare("####") == 0)
不太懂
[/Quote]

区别不同客户端,可以用客户端IP或是客户端主机名。我那个####就是表示你指定的主机名
魔方幻影 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dz881122 的回复:]
直接定义一个结构体TClientIfno pm;
然后将客户端的Socket存入结构体:比如在ServerSocket1ClientRead中写入[code=pm.Socket = Socket;][/code]。
需要调用时:[code=pm.Socket->SendText("消息内容");][/code]
[/Quote]
你有多个客户端的话,直接定义一个结构体数组TClientIfno pm[20];
魔方幻影 2010-12-09
  • 打赏
  • 举报
回复
直接定义一个结构体TClientIfno pm;
然后将客户端的Socket存入结构体:比如在ServerSocket1ClientRead中写入[code=pm.Socket = Socket;][/code]。
需要调用时:[code=pm.Socket->SendText("消息内容");][/code]
xuzhu3000 2010-12-08
  • 打赏
  • 举报
回复
if(ServerSocket1->Socket->Connections[i]->RemoteHost.AnsiCompare("####") == 0)
不太懂
银点 2010-12-08
  • 打赏
  • 举报
回复
ServerSocket1->Socket->Connections[i]->RemoteHost或
ServerSocket1->Socket->Connections[i]->RemoteAddress来区别不同的客户端连接,给它们发送不同的消息

for(int i = 0;i < ServerSocket1->Socket->ActiveConnections ; i++)
{
if(ServerSocket1->Socket->Connections[i]->RemoteHost.AnsiCompare("####") == 0)
ServerSocket1->Socket->Connections[i]->SendBuf();
else
ServerSocket1->Socket->Connections[i]->SendBuf();

}
ccrun.com 2010-12-08
  • 打赏
  • 举报
回复
这个Connections是ServerSocket自动维护的,有一个连接过来,就计数加1, 有连接断开,计数减1, 每个连接对应一个客户端IP地址和一个客户端的端口号, 通过这个来确定连接的唯一性.
sinozw 2010-12-08
  • 打赏
  • 举报
回复
如何 确定Connections[i]中i 值? 是不 在ServerSocketAccep 中就记录 每个连接和其句柄的对应关系,然后在所有Socket 中逐个比较句柄?
ccrun.com 2010-12-08
  • 打赏
  • 举报
回复
更好的控件,当然是indy了.
IdTCPServer/IdTCPClient
ccrun.com 2010-12-08
  • 打赏
  • 举报
回复
ServerSocket1->Socket->Connections[i]->SendText("消息内容");

1,314

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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