关于UDP多线程的问题?请懂的人进来看看,谢谢!
本人自学新手,最近想自己琢磨写一个dns服务器玩玩,但考虑到效率问题(虽然是玩玩,也要尽量完美),希望能用一个线程监听53端口,然后接到请求后分给其他线程处理,我想问问
1 其他线程还能用53端口发数据吗?
2 能多个线程同时用53端口发数据吗?
3 怎么分配接到的数据包达到均衡负载,是不是新接到一个请求就新建一个线程,直到达到设定的线程最大值接受线程就会阻塞,阻塞的时候会不会接不到请求
4 或者说发送线程可以不用53端口返回,不用53端口的话客户端会接受吗
5 我说的是udp,那如果是tcp可行吗
最好有核心代码示例,谢谢
[解决办法]
我没有任何经验,完成靠猜测~
1 其他线程还能用53端口发数据吗?
应该是先考虑进程,再线程;
一个服务器,如果有IIS和Tomcat,那么他们只能有一个使用80端口;
2 一个进程中的多个线程可以使用同一个端口
3 阻塞的时候就排队~~~
5 dns?域名解析么~ 还是用tcp吧~~~ udp是不可靠的,传输过程中丢包就丢包了~
比如本来是解析成192.168.0.101; 但传输丢了168则成为192.0.101了~
[解决办法]
多线程就不能用tcp了,因为tpc要连接的一旦连接了端口就占用了,还是用udp虽然不可靠也不至于不稳定,通过程序的通信协议和校验一般来说是不会出差错的.
[解决办法]
你直接使用线程池线程来管理线程了,你可以监听代码通过ThreadPool.QueueUserworkItem方法来让线程池线程执行监听代码