Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 释放/关闭网络端口?_Java_Android_Networking_Libgdx_Port - Fatal编程技术网

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的东西。