Java 释放/关闭网络端口?
我在Java 释放/关闭网络端口?,java,android,networking,libgdx,port,Java,Android,Networking,Libgdx,Port,我在LibGDX中摆弄套接字。但是每次我想运行我的程序时,我都必须更改代码中的端口,这显然是因为这个端口被上一次运行占用了。我是否可以在程序关闭时关闭端口,或者再次通过该端口连接?否则,我可以做些什么来释放该特定端口而不重新启动 我正在运行一个单独的线程,该线程创建套接字服务器和用于接收的循环。在这个线程下面是一个ClickListener,它向服务器发送消息,目前所有消息都在同一个应用程序中。我如何设置它,以便在程序以任何方式关闭时重用套接字或关闭它 new Threa
LibGDX
中摆弄套接字。但是每次我想运行我的程序时,我都必须更改代码中的端口
,这显然是因为这个端口被上一次运行占用了。我是否可以在程序关闭时关闭端口,或者再次通过该端口连接?否则,我可以做些什么来释放该特定端口而不重新启动
我正在运行一个单独的线程,该线程创建套接字服务器和用于接收的循环。在这个线程下面是一个ClickListener,它向服务器发送消息,目前所有消息都在同一个应用程序中。我如何设置它,以便在程序以任何方式关闭时重用套接字或关闭它
new Thread(new Runnable(){
@Override
public void run() {
ServerSocketHints serverSocketHint = new ServerSocketHints();
serverSocketHint.acceptTimeout = 0;
ServerSocket serverSocket = Gdx.net.newServerSocket(Protocol.TCP, 9024, serverSocketHint);
while(true){
Socket socket = serverSocket.accept(null);
BufferedReader buffer = new BufferedReader(new InputStreamReader(socket.getInputStream()));
try {
labelMessage.setText(buffer.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
button.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y){
String textToSend = new String();
if(textMessage.getText().length() == 0)
textToSend = "Empty message\n";
else
textToSend = textMessage.getText() + ("\n");
SocketHints socketHints = new SocketHints();
socketHints.connectTimeout = 4000;
Socket socket = Gdx.net.newClientSocket(Protocol.TCP, textIPAddress.getText(), 9024, socketHints);
try {
socket.getOutputStream().write(textToSend.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
});
绑定套接字之前,请调用setReuseAddress(true)
但在退出之前,您当然应该关闭所有插座。@选民不要自欺欺人。这是网络编程101的东西。