gpt4 book ai didi

java - 保持服务器和客户端之间的通信畅通 - Java

转载 作者:行者123 更新时间:2023-12-01 12:06:56 25 4
gpt4 key购买 nike

如何使客户端能够随时向服务器发送多条消息,从而使服务器始终监听消息。

现在我已经编写了一些代码,它只允许我发送一次消息。我认为这是由于我关闭了输入/输出流和套接字造成的。所以我已经玩了一段时间了,但我似乎做不到!

客户:

public class Client {
private Socket socket;
private OutputStream os;

public Client() {}

public void connectToServer(String host, int port) {
try {
socket = new Socket(host, port);
} catch (IOException e) {
e.printStackTrace();
}
sendMessage();
}

public void sendMessage() {
try {
os = socket.getOutputStream();

String string = "Anthony";
byte[] b = string.getBytes(Charset.forName("UTF-8"));

os.write(b);
os.flush();

os.close();
} catch (IOException e) {
e.printStackTrace();
}
}

public void STOP() {
stopOutput();
stopServer();
}

public void stopServer() {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}

public void stopOutput() {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

服务器:

public class ConnectionHandler implements Runnable {
private Socket clientSocket;
private BufferedReader in;

public ConnectionHandler(Socket clientSocket) {
this.clientSocket = clientSocket;
String clientAddress = clientSocket.getInetAddress().toString()
.substring(1);
System.out.println("Connected to " + clientAddress);

try {
in = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public void run() {
while (true) {
try {
ArrayList<String> data = new ArrayList<String>();
String inputLine;
while ((inputLine = in.readLine()) != null) {
data.add(inputLine);
}

if (data.size() > 0) {
System.out.println(data.toString());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

public void STOP() {
stopInput();
stopConnection();
}

public void stopInput() {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}

public void stopConnection() {
try {
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

目前在客户端,一旦打开套接字,我就会发送一条消息,但是当我从另一个类调用发送函数时,它不会发送...

我应该怎么做?或者我做错了什么?

提前致谢。

附:我猜客户端-服务器与服务器-客户端相同,所以如果我知道如何做一种方式,我可以轻松地切换它......对吗?

最佳答案

事实证明这是一个简单的错误。

我将(发送客户端)写为OutputStream,但是然后我将(接收服务器)读为BufferedReader!公顷

对于任何人来说,这是一个快速提示,请确保您以发送消息的方式接收消息!

感谢所有尝试提供帮助的人。

关于java - 保持服务器和客户端之间的通信畅通 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27526116/

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