或者调用recv方法接收端收到数据后,,将包接收后存入一个缓冲区,然后迅速返回继续recv。
这个存入缓冲区怎么实现呢?最好附一下这个缓冲区设计操纵的代码,
10 个解决方案
#1
可以采用多线程
#2
各位 帮忙给点思路吧 ,谢了
#3
服务端设计成多线程,一个接收线程,一个处理线程,采用production&consumer模式建立。这样处理最快
#4
如果数据包过多,也会丢包呀,有没有办法加大udp的缓冲空间?
#5
楼上的有道理
#6
我尝试出每当接收一个数据包后,就创建一个线程,然后将数据传给线程处理,这个线程为独立线程,这样就可以同时处理多数据包,经过测试发现如果数据包过多的时候会系统会死掉,线程消耗资过多,还有就是依旧有丢包现象,这个怎么解决呢,
#7
创建线程池,每个线程都监听server套接字,除了会惊群以外是完全安全的,memcached的UDP就是i这么做的。
#8
哪用那么复杂,单独开个线程 ,windows下用完成端口,linux用下epool
#9
能不能详细说一下 linux下的
#10
一看就外行,UDP无连接,就一个Fd,epoll有用? 很明显是线程池共同select这个fd即可,udp的接口recvfrom,sendto是线程安全的。
#1
可以采用多线程
#2
各位 帮忙给点思路吧 ,谢了
#3
服务端设计成多线程,一个接收线程,一个处理线程,采用production&consumer模式建立。这样处理最快
#4
如果数据包过多,也会丢包呀,有没有办法加大udp的缓冲空间?
#5
楼上的有道理
#6
我尝试出每当接收一个数据包后,就创建一个线程,然后将数据传给线程处理,这个线程为独立线程,这样就可以同时处理多数据包,经过测试发现如果数据包过多的时候会系统会死掉,线程消耗资过多,还有就是依旧有丢包现象,这个怎么解决呢,
#7
创建线程池,每个线程都监听server套接字,除了会惊群以外是完全安全的,memcached的UDP就是i这么做的。
#8
哪用那么复杂,单独开个线程 ,windows下用完成端口,linux用下epool
#9
能不能详细说一下 linux下的
#10
一看就外行,UDP无连接,就一个Fd,epoll有用? 很明显是线程池共同select这个fd即可,udp的接口recvfrom,sendto是线程安全的。