accept(),close()方法在ServerSocket上

时间:2012-02-25 22:18:48

标签: java sockets

我创建了一个聊天程序。我的服务器有一个按钮,该按钮用于启动服务器套接字上的服务器调用accept()方法,用于关闭服务器套接字上的服务器调用close()的按钮。

当我重新按下开始按钮以重新接受同一套接字上的连接时,accept方法抛出SocketException套接字被关闭。

2 个答案:

答案 0 :(得分:2)

您无法重新打开套接字。如果要再次使用该变量,则必须创建并分配新的套接字。

Socket上的Java文档,请参阅“关闭”-method:

的信息
  

一旦套接字关闭,它就无法用于进一步的网络连接(即无法重新连接或反弹)。需要创建一个新的套接字。

     

关闭此套接字也将关闭套接字的InputStream和OutputStream。

答案 1 :(得分:0)

如果您以前的套接字成功关闭,那么重新实例化该套接字应该没有问题。这可以在Java中工作,因为JVM会为你释放垃圾。

如果你想要多次连接到服务器(这可能是有用的,因为你正在聊天),那么请记住这一点。 服务器端的accept函数将在每次请求时创建一个新套接字。所以你可以使用线程并将新套接字(使用accept创建的套接字)传递给线程。

如果这不能解答您的问题,我建议您浏览Oracle网站:http://docs.oracle.com/javase/tutorial/

并重新制定问题。