gpt4 book ai didi

java - 为什么我收不到来自 TCP 服务器和客户端的任何消息?

转载 作者:行者123 更新时间:2023-12-02 11:15:45 26 4
gpt4 key购买 nike

我正在尝试用 Java 实现 TCP 服务器和客户端。客户端应向服务器发送一条消息,服务器应将相同的消息发送回客户端。我得到了两者之间的联系,但没有任何消息。我已经在互联网上搜索了很多,我的代码与其他代码非常相似,但我的解决方案仍然不起作用。我对这个话题还很陌生,所以我对每一个建议都很满意。这是我的客户端代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;

public class Client
{
public static void main(String[] args)
{
final int PORT = 5000;
Socket socket = null;
try
{
socket = new Socket("localhost", PORT);
OutputStream os = socket.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
String message = "Hello World";
bw.write(message);
bw.flush();

InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String echo = br.readLine();
System.out.println(echo);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
socket.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
}

服务器代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server
{
public static void main(String[] args)
{
final int PORT = 5000;
ServerSocket serverSocket = null;
Socket socket = null;
try
{
serverSocket = new ServerSocket(PORT);
socket = serverSocket.accept();
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new
InputStreamReader(is));
String message = br.readLine();
System.out.println(message);
OutputStream os = socket.getOutputStream();
BufferedWriter bw = new BufferedWriter(new
OutputStreamWriter(os));
bw.write("ECHO: " + message);
bw.flush();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
serverSocket.close();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}



}
}

最佳答案

这是因为您使用 readLine() 来接收消息,并且您永远不会以 line 结尾来终止消息。

在消息中添加一个新行,readLine() 方法将看到它并向您返回一个值。 字符串消息 =“Hello World\n”;

请注意,您在返回路径上也会遇到相同的问题,因为您还在客户端上使用 readLine()。在服务器回复中添加新行:bw.write("ECHO: "+ message + '\n');

关于java - 为什么我收不到来自 TCP 服务器和客户端的任何消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50295903/

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