日期:2014-05-20  浏览次数:20879 次

socket建立连接
代码如下:
    Socket   socket   =   new   Socket();
    public   void   send(String   host,int   port,String   message){
        socket.connect(new   InetStockAddress(host,port),0);
        //发关消息
        socket.close();
    }
    send()在一个线程中被反复调用,问题是第2次调用时会报socket   is   closed的错
    误,异常发生在connect()处,我打开connect()的源码发现
    里面:
   
    if   (isClosed())
        throw   new   SocketException( "Socket   is   closed ");
      就是关闭后再建立连接就会报错

    怎样关闭连接,而又使下次调用connect()方法时不报错,或者对于这个问题有
    更好的解方案,请响应一下。先谢了....



------解决方案--------------------
在线程开始时connect,在线程结束后close,不要反复连接、断开。
------解决方案--------------------
恩,在线程里面做成connect,close函数,使用线程的地方调用。不要每次发消息都从新连接


如果一定要重新连接把你的new socket放到send函数里面(建议不要这样做,效率问题)
------解决方案--------------------
这样是不行的 一个socket只能连接一次,断开之后就失效了
你如果要写成这样,你可以把new Socket(ip,port)的方法也写到循环里面
------解决方案--------------------
关掉之后,再 new 一个。
------解决方案--------------------
用多线程在停止后自动重新连接!