gpt4 book ai didi

java - BufferedReader readLine 每两行跳过一次

转载 作者:行者123 更新时间:2023-11-30 11:51:52 28 4
gpt4 key购买 nike

我正在使用套接字在服务器和客户端之间进行通信。但出于某种原因,客户端会跳过服务器发送的每一行。

客户代码:

    ...

out.println(console.readLine()); //Client initiates (sent to server)

while ((userOut = in.readLine()) != null) //Waits for response
{
System.out.println("Server says: " + userOut); //Prints response

userIn = console.readLine(); //Gets user input
out.println(userIn); //Sends user input to server
}

...

服务器代码:

    ...

while ((clientIn = in.readLine()) != null) //Waits for clients message
{
System.out.println("Client says: " + clientIn); //Print clients message

//Send appropriate response
if (clientIn.equals(CLIENT_INSTRUCTION_LOGCALC))
{
out.println(SERVER_RESPONSE_LOGCALC_OK); //Send response to client
System.out.println("Message sent: " + SERVER_RESPONSE_LOGCALC_OK); //Print response sent
}

else if (clientIn.equals(CLIENT_INSTRUCTION_SB))
{
out.println(SERVER_RESPONSE_SB_CHANGE);
}

else if (clientIn.equals(CLIENT_INSTRUCTION_BYE))
{
out.println(SERVER_RESPONSE_BYE_OK);
}

else if (clientIn.equals(CLIENT_INSTRUCTION_END))
{
out.println(SERVER_RESPONSE_END_OK);
}

else
{
out.println(SERVER_RESPONSE_INPUT_ERR);
}
...

使用此显示的示例(客户端优先):

 LOGCALC
Server says: LOGCALC: OK
LOGCALC
Server says:

服务器:

Client says: LOGCALC
Message sent: LOGCALC: OK

Client says: LOGCALC
Message sent: LOGCALC: OK

希望你能看到在发送给服务器的第二个 LOGCALC 消息中,服务器响应了,但是客户端没有收到服务器响应。

有什么想法吗?

最佳答案

客户端肯定会收到“某种”消息,因此打印出“服务器说”部分。似乎在向客户端发送“第一响应”时服务器以某种方式写入了一个额外的新行,这导致在第二次迭代中读取空字符串。在第二种情况下,值得检查/调试 userOut 的值。

此外,我不确定这是否是故意的,但在服务器输出的情况下我看到了一个空行。假设所有输出都是发布的代码片段,那么额外的换行符来自哪里?

关于java - BufferedReader readLine 每两行跳过一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7200462/

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