大家好,现在做基于 TCP/IP协议的数据传输,服务器发送命令过来要求客户端上传相关数据,我做的是客户端。。客户端发送一组数据过去,发完希望服务器发送一个数据应答表明数据接收是否成功! 但是一旦客户端没有收到这个应答,要重新发送上次发送的数据!  所以要设置一个超时判断,规定时间没有收到服务器的应答 就重传请问各位有什么好的想法没有,该怎么去实现超时判断??!!  

解决方案 »

  1.   


    如果是基于窗口的就可以用SetTimer KillTimer WM_TIMER
    如果不是基于窗口的 也可以用用一个辅助线程 或 多媒体时钟
      

  2.   

    楼主可以考虑用下面的方面设置socket接收的超时时间,具体怎么用,请查MSDN。int PASCAL FAR setsockopt( SOCKET s, int level, int optname,   const char FAR *optval, int optlen); 
      

  3.   

    超时用waitforsingleobject(hNevelEvent, your_timeout);hNevelEvent  是一个不会触发的事件
      

  4.   

    基于TCP的没必要设置重传机制,因为它本身已经处理过了,除非断线了你再重传。
      

  5.   

    TCP本来就是有连接可靠的传输机制吧;所以这些可以不考虑。
      

  6.   

    可在在通信协议里面 带ACK 表示是否要确认
    带时间标签和报文存活周期,不过要保证两边时钟一致,需要有校时机制