关于UDP多线程的问题?请懂的人进来看看,谢谢!

appl33205 2013-06-23 11:53:54
本人自学新手,最近想自己琢磨写一个dns服务器玩玩,但考虑到效率问题(虽然是玩玩,也要尽量完美),希望能用一个线程监听53端口,然后接到请求后分给其他线程处理,我想问问
1 其他线程还能用53端口发数据吗?
2 能多个线程同时用53端口发数据吗?
3 怎么分配接到的数据包达到均衡负载,是不是新接到一个请求就新建一个线程,直到达到设定的线程最大值接受线程就会阻塞,阻塞的时候会不会接不到请求
4 或者说发送线程可以不用53端口返回,不用53端口的话客户端会接受吗
5 我说的是udp,那如果是tcp可行吗
最好有核心代码示例,谢谢
...全文
164 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonwrite 2013-06-24
  • 打赏
  • 举报
回复
我没有任何经验,完成靠猜测~ 1 其他线程还能用53端口发数据吗? 应该是先考虑进程,再线程; 一个服务器,如果有IIS和Tomcat,那么他们只能有一个使用80端口; 2 一个进程中的多个线程可以使用同一个端口 3 阻塞的时候就排队~~~ 5 dns?域名解析么~ 还是用tcp吧~~~ udp是不可靠的,传输过程中丢包就丢包了~ 比如本来是解析成192.168.0.101; 但传输丢了168则成为192.0.101了~
拥抱开源 2013-06-24
  • 打赏
  • 举报
回复
请叫我卷福 2013-06-24
  • 打赏
  • 举报
回复
1.2.多个线程可以使用同一个socket 当然就是可以使用同一port 3.专门用一个线程接收数据(不分析也不处理),将接受来的数据放进一个待处理区,另开辟线程分析数据处理数据 4.同1.2 5.可以 建议先学习socket通讯
人生导师 2013-06-24
  • 打赏
  • 举报
回复
你直接使用线程池线程来管理线程了,你可以监听代码通过ThreadPool.QueueUserworkItem方法来让线程池线程执行监听代码
yeke168 2013-06-24
  • 打赏
  • 举报
回复
多线程就不能用tcp了,因为tpc要连接的一旦连接了端口就占用了,还是用udp虽然不可靠也不至于不稳定,通过程序的通信协议和校验一般来说是不会出差错的.

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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