当客户端访问 服务器时候,服务器为每个用户分别开一个线程 并且创建Socket用于传递数据。当某个用户要传递的数据结束后,那么这个用户的线程就会终止,那这个用户的的Socket 连接还在吗??

解决方案 »

  1.   

    如果服务器不主动 关闭 客户端的连接,那么客户越多,是不是会存在大量的 ESTABLISHED ,是不是占内存?
    我看好多例子程序源码,在退出程序处理时候,他们也没有说是一个个把里客户的Socket都关掉,难到就一直放到内存里吗
      

  2.   

    连接期间,定时监控连接使用可用。当不可用或数据发送或数据接收完成之后,可使用 Shutdown 方法来禁用 Socket。在调用 Shutdown 之后,可调用 Close 方法来释放与 Socket 关联的所有资源。
      

  3.   

    socket连接只要一边断了,对方的socket就没有意义了,不过最好加上个socket.Close();
      

  4.   

    如果socket是在线程中创建的,那么线程关闭后,socket就自动断掉的,而且会报异常。如果是在线程之外创建的,那么socket不会被关闭,要等到close来手动关闭。不过无论是哪种情况,手动来close一下是最好的。