gpt4 book ai didi

Java - 客户端从 in.readLine() 接收空响应

转载 作者:太空宇宙 更新时间:2023-11-04 14:41:05 24 4
gpt4 key购买 nike

我在编写一款允许人们在线对战的纸牌游戏方面还有很长的路要走。在测试过程中,我注意到客户端偶尔会收到对其消息的空响应,但我不知道为什么。

客户端代码:

InetAddress address = InetAddress.getByName(SERVER_IP);
Socket socket = new Socket(address, SERVER_PORT_NUMBER);
socket.setSoTimeout(20000);

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.write(messageString + "\n");
out.flush();

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
responseString = in.readLine();

//new handling I've added since getting NullPointers later on
if (responseString == null)
{
retryOrStackTrace(new Throwable("NULL responseString"));
}

服务器代码:

BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
message = in.readLine();
String response = getResponseForMessage(message);

//Sometimes getting a null response client-side
if (response == null)
{
Debug.stackTraceServerWithReason("About to send NULL response for message " + message);
}

BufferedOutputStream os = new BufferedOutputStream(clientSocket.getOutputStream());
OutputStreamWriter osw = new OutputStreamWriter(os, "US-ASCII");
osw.write(response + "\n");
osw.flush();
osw.close();

自从我添加服务器端堆栈跟踪以来,它还没有出现,所以这绝对不是服务器构建响应的问题。

由于这种情况的间歇性,我想将其归因于连接性,但是当我在同一个盒子上运行服务器并将客户端指向本地主机时,我就遇到了这种情况,所以我不确定。我还希望 ConnectException/SocketException/SocketTimeoutException 能够解决任何连接问题,所有这些问题客户端在使用 retryOrStackTrace() 重新发送消息一定次数之前已经捕获,然后放弃。

我可以保持原样,让空响应以相同的方式处理,但感觉很懒。我只是不知道从哪里开始找出根本问题所在。

最佳答案

回顾这一点,我认为问题在于通过在 Eclipse 中构建断点/热交换代码。我只在通过 Eclipse 运行时见过这个问题 - 通过 JAR 运行效果很好。哦!

关于Java - 客户端从 in.readLine() 接收空响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24919725/

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