我用SOCKET做FTP客户端,采用PORT模式,每次LIST都得重建数据通道(不知道怎样才能重用连接),原有的数据通道关闭后不能立即释放所占用的端口,我只能开新的端口,而且我延迟后也不能释放,这就存在资源不能有效利用且可能耗尽资源的情况,显然不合理,所以请做过FTP数据通道的朋友指点一个端口释放方面的做法。
另能谈谈端口复用或连接复用方面的做法也非常需要。
先谢谢大家。

解决方案 »

  1.   

    我也遇到了这个问题shutdown其实也没有断开连接
    没发只能closesocket然后再socket
      

  2.   

    这都试过,用setsockopt设置SO_REUSEADDR,是可以释放端口,但我再次无法建立数据通道,10004错误,原因没有找到。
      

  3.   


    这样得新开端口,即使closesocket。
    总不能因这个问题而耗尽系统端口资源吧
      

  4.   

    SO_LINGER 没MSDN真痛苦,我猜可能是这个东西
    试验一下吧看样子像
      

  5.   

    DisconnectEx ms有这个貌似能断开链接
    不知道他怎么弄得有兴趣的哥们OD一下看看他们怎么做的
      

  6.   

    一般情况下调用closesocket(id)就可以关闭socket.并且释放端口
    在控制台下用netstat -p TCP命令察看.没有close_wait就说明端口关端了.端口重用好像是不太安全.没试过.也是在网上看的.
      

  7.   

    How to release the port of TCP Client immediately when the connection is disconnect with the TCP server. - TCP 客户端与 TCP 服务器断开连接后,如何立刻释放端口http://blog.csdn.net/HackerJLY/archive/2011/01/05/6116857.aspx