我的UDP绑定本机4000端口。
然后向3000、60000、9876等任意一个未被使用的端口发送数据,接下来,recvfrom函数马上返回SOCKET_ERROR,用WSAGetLastError之后,得到的错误值是WSAECONNRESET。MSDN上又说,遇到这个错误,需要关闭socket,说“it is no longer usable”。可是我觉得这个应该不需要关闭吧?当我再向那些正常使用的UDP端口发送数据时,仍然没有问题。也就是说这个socket还能够使用的。究竟该怎么处理呢?

解决方案 »

  1.   

    然后向3000、60000、9876等任意一个未被使用的端口发送数据,接下来,recvfrom函数马上返回SOCKET_ERROR没听明白呵呵,贴代码好点
      

  2.   

    因为这些端口未使用, 所以对方主机(可能是同一台机器)会返回ICMP错误报告, UDP可以识别这些错误, 然后你就得到了错误值WSAECONNRESET. 这很正常啊, 有什么问题? 楼主想处理什么?
      

  3.   

    就是想知道遇到这种错误这么办,MSDN上说需要closesocket,我觉得不需要,所以想问问大家~
      

  4.   

    不需要closesocket。udp的socket跟目标无关,复用就行了。
      

  5.   

    不管WSAGetLastError得到什么错误,UDP的SOCKET都不需要关闭是吗?