gpt4 book ai didi

java - IOException 没有提供足够的信息

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

我的 Android 程序无法运行。我正在使用普通的客户端-服务器套接字。我已经用 telnet 测试了我的服务器,它工作正常,但是当我用我的 android 程序尝试它时,它不起作用(稍后会详细介绍)。这是我的代码:

 Socket s = null;
try
{
String SocketServerAddress = db.getPhSsServerAddress();
Integer SocketServerPort = db.getPhSsServerPort();
s = new Socket(SocketServerAddress, SocketServerPort);
Log.d(MY_DEBUG_TAG, "Setting up Socket: " + SocketServerAddress + ":" + SocketServerPort);
DataOutputStream out = new DataOutputStream(s.getOutputStream());
DataInputStream in = new DataInputStream(s.getInputStream());
Log.d(MY_DEBUG_TAG, "Connected to: " + s.getInetAddress() + " on port " + s.getPort());

out.writeUTF("Helo, Server");
out.flush();
Log.d(MY_DEBUG_TAG, "Bytes written: " + out.size());
String st = in.readUTF();

Log.d(MY_DEBUG_TAG, "SocketServerResponse: " + st);
}
catch (UnknownHostException e)
{
Log.e(MY_ERROR_TAG, "UnknownHostException: " + e.getMessage() + "; " + e.getCause());
}
catch (IOException e)
{
Log.e(MY_ERROR_TAG, "IOException: " + e.getMessage() + "; " + e.getCause() + "; " + e.getLocalizedMessage());
}
finally
{
try {
s.close();
} catch (IOException e) {
Log.e(MY_ERROR_TAG, "IOException on socket.close(): " + e.getMessage() + "; " + e.getCause());
}
}

我在这里得到的只是抛出的 IOException ,没有附加任何消息或原因。导致错误的特定行是 String st = in.readUTF()。如果我注释掉该行,我的代码运行良好(不会引发异常),但我的服务器不承认任何数据已发送给它。当然,由于该行被注释掉,我没有得到任何数据。

那么,我该如何找出问题所在呢?今晚我将尝试查看使用wireshark 传递的内容,看看是否能提供任何见解。

最佳答案

服务器是否使用 readUTF()writeUTF()也? writeUTF()以独特的格式写入数据,只有 readUTF(), 才能理解它不会理解任何其他内容。

编辑 EOFException意味着没有更多数据了。您应该单独捕获它并通过关闭套接字等来处理它。它肯定可能是由 readUTF() 引起的。尝试读取未使用 writeUTF(). 写入的数据

并确定这是一个 IOException当它真的是一个EOFException时意味着您没有打印或记录异常本身,只是它的消息。始终使用为异常提供的日志方法,或者至少使用 Exception.toString().

关于java - IOException 没有提供足够的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7909062/

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