首先谢谢各位!我是希望高人给我提供个服务器端的编程模型。我的服务器端会接收多个客户端的连接,并接收客户端发来的数据。由于我客户端会频繁的连接和关闭,所以我想在客户端关闭之后,服务器端作相应的处理。我是在每个客户端连接后都加入到一个链表中,并开出一个线程用select来检测连接的socket可读性,如果可读,就接收客户端的数据。

解决方案 »

  1.   

    搞不清楼主的意思,直接closesocket不就行了
      

  2.   

    我的意思是说客户端调用了closesocket,服务器端怎么知道客户端关闭了?
      

  3.   

    如果请求量很大,可以考虑用io完成端口.
    客户关闭socket后,服务端这边的select会返回一个错误代码,你可以此时调用closesocket,然后作清除链表的处理,并退出线程.
      

  4.   

    如果对方closesocket,select会成功,但recv返回0。可以根据recv的返回值来判断。
      

  5.   

    同意6楼的,再select成功后,判断recv返回值.
      

  6.   

    cnzdgs: 那么 FD_ISSET( Socket, &fdRead ) 会返回什么?
      

  7.   

    FD_ISSET( Socket, &fdRead )是检查Socket是否在fdRead中,与连接是否断开没有关系。
      

  8.   


    请恕小弟直言,FD_ISSET应该是判定socket是否可读写吧?