gpt4 book ai didi

java - Java 中的 TCP 服务器和客户端

转载 作者:行者123 更新时间:2023-12-04 03:48:57 24 4
gpt4 key购买 nike

我尝试使用 Java 构建 TCP 服务器和客户端。它们可以连接,运行良好,但我有一个错误。

这是服务器端:

package com.company;
import java.io.*;
import java.net.*;

public class Main {

public static void main (String[] args) throws IOException {

System.out.println("The server is ready");
ServerSocket serverSocket = new ServerSocket (1234);
Socket clientSocket = serverSocket.accept ();

BufferedReader in = new BufferedReader (new InputStreamReader (clientSocket.getInputStream ()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
String message, modifiedMessage;
message = in.readLine ();
System.out.print("The received message from client: " + message);
modifiedMessage = message.toUpperCase();
out.print(modifiedMessage);
System.out.println ("\nModified message which is sent to client: " + modifiedMessage);
}

}

服务器必须从客户端接收消息,然后将其转换为大写字符串。

客户端是:

package com.company;
import java.io.*;
import java.net.*;

public class Main {

public static void main(String[] args) throws IOException {

Socket socket = new Socket("127.0.0.1", 1234);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
System.out.println("Enter a lowercase sentence: ");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader in = new BufferedReader((new InputStreamReader(socket.getInputStream())));

String messageSent = reader.readLine();
System.out.println("The message sent is: " + messageSent);
out.println(messageSent);


String messageReceived = in.readLine();
System.out.println("The modified message is: " + messageReceived);
}
}

我希望客户端能够打印小写句子和接收到的(修改后的)大写句子。问题是,当我输入一个简单的单词时,你好,我的客户端只会打印原始字符串,而不是修改后的字符串。

服务器的输出是:

The received message from client: hello 
The modified message sent to the client is: HELLO

但是客户端的输出是:

The message sent is: hello 
The modified message is: null

我知道服务器能够将字符串转换为大写版本并连接到我的客户端。为什么我的客户端不打印收到的消息?它真的没有收到吗?

最佳答案

您需要刷新消息。 PrintWriter 在 println 中调用 flush,而 print 不会。

在服务器端你需要更改为:out.println(modifiedMessage);代替out.print(modifiedMessage);

关于java - Java 中的 TCP 服务器和客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64718872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com