gpt4 book ai didi

java - 在消息到达时显示消息,而不是在 session 结束时显示所有消息

转载 作者:行者123 更新时间:2023-12-01 13:23:32 24 4
gpt4 key购买 nike

我正在尝试在我的 Java 应用程序中显示以字节形式发送的消息。但是,我无法让我的应用程序在每条消息到达时都显示它们。

相反,当客户端断开连接时,它会在单个String 中显示所有消息。首先发送“Hello”消息,最后发送“Bye”消息给我“HelloBye”

当每条消息到达服务器时,如何使用字节显示它们?

这是服务器线程代码:

public void run() {

while (true) {

try {

int data;
String string = new String();

while ( (data = inputStream.read() ) != -1) {
char thisChar = (char) data;
string = string + thisChar;
}

System.out.println("Here is the message: " + string);

if (inputStream.read() == -1) break;


} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}

}

try {
socket.close();

} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}

System.out.println("Client session has ended");
}

这是发送消息的客户端:

    clientSocket.getOutputStream().write("Hello".getBytes());
clientSocket.getOutputStream().write("Bye".getBytes());

最佳答案

一种方法是在每条消息的末尾添加一个分隔符,并在 inputStream.read() 循环中处理该分隔符。

您还可以指定消息的长度并将长度附加在消息的开头。通常我们会决定一种消息格式并坚持使用。

即消息格式:

=========================================================
= Length (2 bytes) | Message =
=========================================================

您可能想查看此链接

Delimit data coming from socket

关于java - 在消息到达时显示消息,而不是在 session 结束时显示所有消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21907834/

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