我做了一个使用UDP通讯的C/S程序,套接字是用2.2版本,接受发送用的是WSARecvFrom WSASendTo
使用中发现当客户端连续发送几十上百个包给服务端后,就会中断1分钟左右,期间服务器收不到此客户端的包
但是服务器可以收到其它连接的包服务端采用线程,以阻塞方式收包,没有采用异步
因为可能要和外网的其他内网通讯,发送接受使用同一个套接字尝试过关闭套接字上的发送缓冲和接受缓冲,不能解决问题高分求助,请高手帮忙

解决方案 »

  1.   

    UDP是可能会丢包,但在局域网内可以忽略,我想这个不是问题的原因
      

  2.   

    不管在局域网,还是广域网,UDP都存在丢包,例如交换机的缓存用完,路由器的缓存用完,接收端的socket接收缓存用完。
    所以不管在LAN,WAN里都存在丢包,丢包的可能性跟具体的网络环境有关。
      

  3.   

    没准是发包阻塞\错误,获取错误代码看看.
    if(WSASendTo(sockettol,&wsabuf,1,&dwSend,0,(sockaddr*)&tecfrom,sizeoftecfrom,NULL,NULL)== SOCKET_ERROR)
    {
    int err=WSAGetLastError();
    char dd[100]={0};
    sprintf(dd,"数据发送错误:%d--%06d#%s\r\n",err,ntohs(tecfrom.sin_port),inet_ntoa(tecfrom.sin_addr));
    }[/align]
      

  4.   

    一般都用TCP比较稳妥,为什么你非要用UDP呢?