【发布时间】:2018-11-11 16:05:40
【问题描述】:
我正在尝试从服务器向所有客户端广播消息,但只有一个客户端接收到消息。
我想运行this server 和两个或更多this client 实例(取自Donahoo,Calvert,“C 中的TCP/IP 套接字”,1e;我可以根据要求将代码粘贴到这个问题中)。
程序在单个客户端上运行良好,但在运行两个客户端时,只有一个(第一个)收到消息,而第二个实例则卡住了(bind)。
我不知道我做错了什么,我确定程序是正确的,所以也许我运行错了。我将服务器启动为:
$ ./BroadcastSender localhost 1337 hey &
对于客户端,我尝试了两种变体,第一种:
$ ./BroadcastReceiver 1337 & ./BroadcastReceiver 1337 &
在第二个变体中,我在close(sock) 之后添加了while (1) {},然后运行为:
$ ./BroadcastReceiver 1337 &
$ ./BroadcastReceiver 1337 &
两种变体给出相同的结果,即第一个客户端收到消息,另一个没有,而是在尝试bind时卡住了。
我是否以错误的方式运行服务器/客户端,或者代码中是否缺少某些内容?我是套接字新手,所以我真的不知道服务器代码中是否有任何内容,例如“我将只向一个客户端广播”。
你能给我一些正确的方向吗?还有其他关于广播的问题和答案,但我还没有找到解决这个特定问题的问题和答案。谢谢。
【问题讨论】: