作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 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/
我是一名优秀的程序员,十分优秀!