在Win Socket编程中,使用CScoket 或CAsyncSocket如何设置发送与接收超时,谢谢

解决方案 »

  1.   

    CAsyncSocket::SetSockOpt( int nOptionName, const void* lpOptionValue, int nOptionLen, int nLevel = SOL_SOCKET );
    nOptionName用SO_SNDTIMEO or SO_RCVTIMEO。
      

  2.   

    MSDN中关于SetSockOpt的说明在后面有如下语句,作何解释?
    Berkeley Software Distribution (BSD) options not supported for SetSockOpt are:  SO_SNDTIMEO,  SO_RCVTIMEO
      

  3.   

    超时吗? 自己做吧.粗略想想:套接字关联上一个 DWORD 值, 当发送或接收时, 记录开始的时间, 用 GetTickCount, 
    创建一个监视线程, 每隔一分钟扫描每一个正在发送或接收的套接字, 比较时间, 超过某个时间就 close 它
      

  4.   

    select 函数用在Winsock中行吗?我再研究一下看看。SDK编程时时可以的
      

  5.   

    realdreamer(夜游神):
    你的方法是不是太麻烦了,而且系统的开销可能又增大了哼多哦
      

  6.   

    ufox(老沈) :select在WINDOWS下都可以的!!!!
      

  7.   

    查查msdn的csocket类  你会找到答案的
      

  8.   

    关于CSocket类的说明就少了,
    int select(
      int nfds,                           
      fd_set FAR *readfds,               
      fd_set FAR *writefds,              
      fd_set FAR *exceptfds,             
      const struct timeval FAR *timeout  
    );可以???
      

  9.   

    CSocket有个m_nTimeOut支持超时的,不过不知道好不好用
    至于CAsyncSocket,我想可以自己用个定时器来加以判断
      

  10.   

    我怎么不知道CSocket有个m_nTimeOut成员!好像没有哦