通过套接字的Java通信

通过套接字的Java通信,java,sockets,Java,Sockets,我试图通过套接字实现基本的TCP通信,但问题是它不起作用。当我从客户端输入几句话时,服务器只收到第一句话并回复 客户: String sentence; String modifiedSentence; BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in)); Socket clientSocket = new Socket("localhost", 5055);

我试图通过套接字实现基本的TCP通信,但问题是它不起作用。当我从客户端输入几句话时,服务器只收到第一句话并回复

客户:

String sentence;
    String modifiedSentence;
    BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));
    Socket clientSocket = new Socket("localhost", 5055);
    DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
    BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
    while(!(sentence = inFromUser.readLine()).equals("end")) {
        outToServer.writeBytes(sentence + '\n');
        modifiedSentence = inFromServer.readLine();
        System.out.println("FROM SERVER: " + modifiedSentence);
    }
    clientSocket.close();
服务器:

String clientSentence;
    String capitalizedSentence;
    ServerSocket welcomeSocket = new ServerSocket(5055);

    while (true) {
        Socket connectionSocket = welcomeSocket.accept();
        BufferedReader inFromClient =
                new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
        DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
        clientSentence = inFromClient.readLine();
        System.out.println("Received: " + clientSentence);
        capitalizedSentence = clientSentence.toUpperCase() + '\n';
        outToClient.writeBytes(capitalizedSentence);
    }

服务器等待连接,读取一行,然后等待新连接。您正试图通过一个连接从客户端发送多条线路。要么让您的客户端为您要发送的每一行打开一个新连接,要么让服务器继续读取,直到它知道它已到达输入的末尾。因此line Socket connectionSocket=welcomeSocket.accept()应该在while之前,对吗?我检查了它,它与安装工作,您的服务器将只响应一个请求,然后退出。在这一点上,没有多少服务器。