首页 新闻 会员 周边

C# 熟悉socket通讯的朋友进来看看..

0
悬赏园豆:10 [已解决问题] 解决于 2013-01-22 16:32

这是2个面试题:

 

1,只用一台机器,同时向10万个IP发送一个消息,你会怎么实现?

 

2,反过来,只用一台机器,怎么接收10万台终端(10万个IP)在同一时间反馈给你的消息?

hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2013-01-19 09:16
< >
分享
最佳答案
0

我也在找类似问题的答案

第一个问题理想方法是UDP组播,但是大多路由器不会转发组播数据。我想只能靠分别给10W个IP发送消息,发10W次……我突然想到一个方法,是否可以参照细胞分裂的,每次发N个,并给与这N个客户端各自的分发任务(待发送的IP集合),这N个客户端按照同样方式完成各自任务,即继续发送给“下线”并给它们分配分发任务,那么“根机器”本身并不需要发多少次就能将消息转达给10W个客户端……就当我梦呓吧,不过如果能在分发过程中维护待发送IP集合,那么我认为这个方法还是可行的。

第二个问题,多个Socket同时接收?

收获园豆:9
莱布尼茨 | 初学一级 |园豆:156 | 2013-01-19 11:17

很有道理啊!!!

 

第二个问题等高人回答..分给你一半.呵呵

hexllo | 园豆:318 (菜鸟二级) | 2013-01-22 16:31

还是结了重新发吧.

hexllo | 园豆:318 (菜鸟二级) | 2013-01-22 16:32
其他回答(1)
0

lz 介于你的问题,我觉得,要同时给过个客户端发送消息,一般通过线程池来完成的。

收获园豆:1
bos_kg | 园豆:7 (初学一级) | 2013-01-19 13:12

发送消息我觉得不需要用线程池,一般都是单网卡,最终也是通过网卡“单线程”发送,除非服务端要等客户端响应比如TCP方式可以采用线程池,否则无故增加线程切换的消耗。不保证我这个观点的正确性。

支持(0) 反对(0) 莱布尼茨 | 园豆:156 (初学一级) | 2013-01-19 19:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册