我创建了一个聊天程序。我的服务器有一个按钮,该按钮用于启动服务器套接字上的服务器调用accept()方法,用于关闭服务器套接字上的服务器调用close()的按钮。
当我重新按下开始按钮以重新接受同一套接字上的连接时,accept方法抛出SocketException套接字被关闭。
答案 0 :(得分:2)
您无法重新打开套接字。如果要再次使用该变量,则必须创建并分配新的套接字。
从Socket上的Java文档,请参阅“关闭”-method:
的信息一旦套接字关闭,它就无法用于进一步的网络连接(即无法重新连接或反弹)。需要创建一个新的套接字。
关闭此套接字也将关闭套接字的InputStream和OutputStream。
答案 1 :(得分:0)
如果您以前的套接字成功关闭,那么重新实例化该套接字应该没有问题。这可以在Java中工作,因为JVM会为你释放垃圾。
如果你想要多次连接到服务器(这可能是有用的,因为你正在聊天),那么请记住这一点。 服务器端的accept函数将在每次请求时创建一个新套接字。所以你可以使用线程并将新套接字(使用accept创建的套接字)传递给线程。
如果这不能解答您的问题,我建议您浏览Oracle网站:http://docs.oracle.com/javase/tutorial/
并重新制定问题。