Java套接字在连接后关闭?

Java套接字在连接后关闭?,java,Java,为什么客户端建立连接后,此端口/套接字会关闭 package app; import java.io.*; import java.net.*; public class socketServer { public static void main(String[] args) { int port = 3333; boolean socketBindedToPort = false; try { ServerSocket ServerSocket

为什么客户端建立连接后,此端口/套接字会关闭

package app;

import java.io.*;
import java.net.*;

public class socketServer {

public static void main(String[] args) {
    int port = 3333;
    boolean socketBindedToPort = false;

    try {
        ServerSocket ServerSocketPort = new ServerSocket(port);
        System.out.println("SocketServer Set Up on Port: " + port);
        socketBindedToPort = true;

        if(socketBindedToPort == true) {
            Socket clientSocket = null;

            try {
                clientSocket = ServerSocketPort.accept();//This method blocks until a socket connection has been made to this port.
                System.out.println("Waiting for client connection on port:" + port);
                /** THE CLIENT HAS MADE A CONNECTION **/
                System.out.println("CLIENT IS CONENCTED");
            } 
            catch (IOException e) {
                System.out.println("Accept failed: " + port);
                System.exit(-1);
            }
        }
        else {
            System.out.println("Socket did not bind to the port:" + port);
        }
    }
    catch(IOException e) {
        System.out.println("Could not listen on port: " + port);
        System.exit(-1);
    }



}


}

未经测试,但我很确定这是因为您的程序中没有其他内容。一旦ServerSocketPort.accept();完成后,程序将到达main的末尾并关闭。

未经测试,但我很确定这是因为您的程序中没有其他内容。一旦ServerSocketPort.accept();完成后,程序将到达main的末尾并关闭。

您需要向其中添加一个对客户端做出反应的流

试试这个:

Socket accepted = serverSocketPort.accept();
InputStream inStr = accepted.getInputStream();

您需要向其中添加一个对客户端作出反应的流

试试这个:

Socket accepted = serverSocketPort.accept();
InputStream inStr = accepted.getInputStream();

程序运行得非常好。一旦客户端连接或服务器套接字超时,它就会停止。你的目标是什么?

程序运行得非常好。一旦客户端连接或服务器套接字超时,它就会停止。你在这里的目标是什么?

@Matthew

伊姆霍,乔尔对你的问题有最接近的答案

“连接已关闭,因为程序在接受连接后存在”

通常,accept是在循环中运行的,因此服务器会一直侦听端口上的连接请求

伊姆霍,乔尔对你的问题有最接近的答案

“连接已关闭,因为程序在接受连接后存在”


通常,accept是在循环中运行的,因此,服务器会一直侦听端口上的连接请求

我如何添加一个侦听器,以便在客户端与它建立连接时作出反应?@Matthew抱歉,我指的是流。你必须阅读客户端发送给你的内容。我如何添加一个侦听器,当客户端连接到它时,它会做出反应?@Matthew抱歉,我指的是流。你必须阅读客户发给你的东西。只是一张便条,你的打印顺序不对。您应该将“等待客户端连接…”放在clientSocket=ServerSockPort.accept()之前;请注意,你的打印顺序不对。您应该将“等待客户端连接…”放在clientSocket=ServerSockPort.accept()之前;