gpt4 book ai didi

java - 简单的 Java 服务器/客户端不工作?

转载 作者:行者123 更新时间:2023-11-29 05:57:14 27 4
gpt4 key购买 nike

我有一个基本的服务器和一个用 Java 编码的客户端。这是我在互联网上看到的代码,并根据我的需要进行了一些修改。现在的问题是,我基本上是从客户端向服务器发送一条消息。此消息将是“你好”。服务器检查端口 6789 是否有包含单词“hello”的消息,如果是,则它必须获取特定目录中所有文件/子目录的名称。这些名称中的第一个被发送回客户端,客户端将其打印出来。我已经打开了 6789 端口,并且从客户端向服务器发送消息工作正常。服务器接收它并执行必要的操作,但它不会将数据发送回客户端。我不知道客户端是否没有收到它或者服务器是否没有发送它。这是两个代码:

客户端

    String sentence = "hello";
Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer = new DataOutputStream(
clientSocket.getOutputStream());
outToServer.writeBytes(sentence + '\n');
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
System.out.println(inFromServer.readLine());
clientSocket.close();

服务器

    String sentence;
ServerSocket welcomeSocket = new ServerSocket(6789);

while (true) {
Socket connSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(
new InputStreamReader(connSocket.getInputStream()));
sentence = inFromClient.readLine();
if (sentence.contains("hello")) {
File dir = new File("D:/ServerMap/");
String[] children = dir.list();
if (children == null) {
JOptionPane.showMessageDialog(frame,
"Either no directory or it doesn't exist");
} else {
DataOutputStream outToClient = new DataOutputStream(
connSocket.getOutputStream());
outToClient.writeBytes(children[0]);
JOptionPane.showMessageDialog(frame, children[0]);
}
}
}

我通过单独导出的 Runnable Jar 文件执行服务器,客户端在 Eclipse 中编译和运行。

只是为了澄清我的问题:客户端向服务器发送“hello” -> 服务器收到消息并且它包含“hello”所以 if 语句返回 true -> 服务器检查指定目录中的文件名并找到一对 -> 服务器发回它找到的第一个文件名 -> 客户端应该接收该文件名并在 Eclipse 控制台中打印它(这是不起作用的部分)

有什么建议吗?

PS:这都是在本地主机上完成的。它是在 1 台计算机上完成的,Windows 7 x64,端口 6789 是打开的(在我手动打开它之前根本不起作用),仅此而已。

最佳答案

您应该将客户端输出流中的数据刷新到您的服务器中:

outToClient.writeBytes(children[0] + "\n");
outToClient.flush();
// etc.

关于java - 简单的 Java 服务器/客户端不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11592617/

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