2个进程都在本机,一个是服务端,一个是客户端,刚启动时收发数据都正常,后来服务端发的数据客户端都没收到。因为都在本机,没法抓包确认数据到底到了客户端没,服务端发送函数也没有返回错误,大家有好的办法分析没?这个问题只出现过一次,搞了半天无法下手,重启后OK了。

解决方案 »

  1.   

    有没有CPU利用率过高的一瞬间?
      

  2.   

    发送的数据放在 send.txt里,收到的数据放在recv.txt里面,比较一下就行了。
      

  3.   

    都在本机时,服务器端口和客户端的端口肯定不一样,服务器端口你bind时肯定知道
      

  4.   

    那你windos套接字实现的估计是阻塞模式。即recvfrom这个函数产生问题了,即网络上没有数据传来,该函数就会阻塞程序,导致调用线程暂停运行。所以有两种方式可以解决这种问题:1.你使用非阻塞模式,即使用windows socket的异步选择函数WSAAsyncSelet提供的消息机制的网络时间选择。有数就接,没有就干别的事情。
    2.你可以设置等待延时的时间,在一定的时间里如果有数来就接,若我设置等待的时间到了还没有数据过来我就不等了,干别的事去!
      

  5.   

    codeproject 和 CodeGuru上看看,
      

  6.   

    代码没法帖,我这里只有服务端,客户端代码看不到。
    服务端采用如下方式接收数据,有个类继承自ACE_Svc_Handler,然后在handle_input中调用this->peer_.recv
    后来没出现了,当时忘了抓堆栈看看线程在干嘛了。
    有人能有本机抓包工具就好了。