由于在TCP协议下,我们有WSAAccept可以做循环来侦听客户端的连接,但是在UDP协议下,我们不能使用WSAAccept这个函数来获取客户端的数据,因此我采用了WSARecvFrom来一直做循环,从而获取客户端的数据。我在使用这个函数的时候,由于SOCKET只有一个,因此一创建了服务端的SOCKET就将该SOCKET与完成端口绑定。这样做了以后,程序几乎不能运行,在WSARecvFrom循环执行以后,2500次以后,SOCKET底层就报错,错误码为10055,不知道是哪个资源没有释放,或者说,这种处理UDP下的完成端口的做法本身就不对,请各位大侠指正。
UDP?无连接 有必要用完成端口吗
建议你换个模式:重叠IO,WSAAsynSelect,WSAEventSelect都可以解决你的问题
完成端口的优势在于多套接字时。
我什么都不用,一个UDP流量也可以达到80~90Mb
Sleep(10),就可以接收到300个数据,不知原因,愿高手赐教
应该是你一直循环结果让非分页内存耗尽了吧。