如题,我有一个模拟ping的程序,有疑问的一部分过程是:使用ICMP协议,sendto数据后,select返回有数据可读,然后直接closesocket。问题:调用这段程序跑数小时后,会造成死机,对于上面列出的这段,我不太清楚直接closesocket但未接收回应数据,是否能确保清理干净呢?

解决方案 »

  1.   

    直接closesocket应该是没有问题的。
      

  2.   


    测试过几次,崩溃时的CPU和内存占用都不高,几次死机都在gethostbyname中。我想问的时,你说输出内存、缓冲区是指哪些?我的发送数据么?
      

  3.   

    如果没有错误发生,gethostbyname()返回如上所述的一个指向hostent结构的指针,否则,返回一个空指针。应用程序可以通过WSAGetLastError()来得到一个特定的错误代码。判断返回值。