c/c++ socket tcp如何实现广播/多播?

tzg_dzq 2011-09-14 10:18:39
如何才能高效地实现一台服务器同时向多台客户端发送数据?

广播/多播有这种功能,不知如何实现?

高手请指点。
...全文
1747 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
feitianxiaozi 2014-05-21
  • 打赏
  • 举报
回复
能不能整点实用 的。感觉木有爱了。
  • 打赏
  • 举报
回复
貌似大神很多。可惜作为初学者还是没懂。
wjb_yd 2011-09-19
  • 打赏
  • 举报
回复
tcp是一对一面向连接的,单个套接字没法多播/广播的。
xengine-qyt 2011-09-18
  • 打赏
  • 举报
回复
组播有组播地址。需要加入和离开,socket 提供单独的选项支持!! 可以查查资料。。

for 发送是串行的。效率太低咯!

[Quote=引用 16 楼 tzg_dzq 的回复:]

谢谢各位的提示。

应该用组播。

可组播要些什么条件?
[/Quote]
tzg_dzq 2011-09-16
  • 打赏
  • 举报
回复
谢谢各位的提示。

应该用组播。

可组播要些什么条件?
xengine-qyt 2011-09-14
  • 打赏
  • 举报
回复
广播和多播地址你可以去看看百度。

很简单的,不过没法适用于广域网 需要特殊处理!
ccjsj1 2011-09-14
  • 打赏
  • 举报
回复
围观,我也在为这个问题困扰呢。
hancker 2011-09-14
  • 打赏
  • 举报
回复
广播/多播的话,估计得走UDP吧?
dfasri 2011-09-14
  • 打赏
  • 举报
回复
别发梦了, 不可能.
hanyuwei0 2011-09-14
  • 打赏
  • 举报
回复
多播和广播只能用于UDP
qq120848369 2011-09-14
  • 打赏
  • 举报
回复
多播是广域网上可以用的。。
孤舟 2011-09-14
  • 打赏
  • 举报
回复
首先 用广播是绝对不会高效的 尤其对于网络负荷来说 而且广域网你是无法广播的
第2 多播需要特殊的IP地址 对于广域网来说 需要你的客户机都注册过你的多播地址你才能发送到
第3 TCP 是点对点传输 和广播 多播8杆子打不着
lileicool 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 tzg_dzq 的回复:]

问题:如果要用TCP,保存客户端socket,一个for(),挨个发。

提问:若我要发送一个上G的文件时,这种方法是不是太慢了!

我要的效果是:
当与多个客户端进行数据传输时,如何才能使服务器负担轻并且高效。

我的想法框架是:
一个网络分为多个网段,有一台主服务器,
每个网段有一台代理服务器(如何选择要合适点?选择第一台连接到主服务器上的机器作为代理服务器?),
其他机……
[/Quote]

你这是BT吧?
tzg_dzq 2011-09-14
  • 打赏
  • 举报
回复
问题:如果要用TCP,保存客户端socket,一个for(),挨个发。

提问:若我要发送一个上G的文件时,这种方法是不是太慢了!

我要的效果是:
当与多个客户端进行数据传输时,如何才能使服务器负担轻并且高效。

我的想法框架是:
一个网络分为多个网段,有一台主服务器,
每个网段有一台代理服务器(如何选择要合适点?选择第一台连接到主服务器上的机器作为代理服务器?),
其他机器都属于一个特定的网段。
当其他机器需要数据时先把信息发送至主服务器,主服务器检查他所在的网段是否有代理服务器,
若存在并且有他想要的数据,则直接从代理服务器上取数据,
若代理服务器上没有需要的数据时才从主服务器上取数据。
若他所在的网段无代理服务器,则设置他自己为代理服务器,并把数据传输给他,
以后若在他所在的网段中有其他机器要数据时就从他哪里取数据。

这是我大概的想法,不知各位有更好的建议吗?
交流交流!
zhd320 2011-09-14
  • 打赏
  • 举报
回复
UDP 貌似socket有设置,加个某个参数就表示广播
pathuang68 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 anwjiango 的回复:]

一台服务器同时向多台客户端发送数据 和 多播/广播 不是一回事。

服务器向多台客户端发送数据 是 遍历所有的连接的socket发送。

而多播/广播 是UDP协议里的。 像飞鸽传书就是用的UDP的广播。
[/Quote]

++

一台服务器同时向多台客户端发送数据 和 多播/广播 不是一回事。 这句话很重要,详细的情况,在论坛里面说不清楚,自己到网上搜一下,很多这方面的内容。
冻结 2011-09-14
  • 打赏
  • 举报
回复
《unix 网络编程》
是UDP。

如果要用TCP,保存客户端socket,一个for(),挨个发。
悍匪笑哈哈 2011-09-14
  • 打赏
  • 举报
回复
楼上正解
luciferisnotsatan 2011-09-14
  • 打赏
  • 举报
回复
google下
AnwJiango 2011-09-14
  • 打赏
  • 举报
回复
一台服务器同时向多台客户端发送数据 和 多播/广播 不是一回事。

服务器向多台客户端发送数据 是 遍历所有的连接的socket发送。

而多播/广播 是UDP协议里的。 像飞鸽传书就是用的UDP的广播。

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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