我的android程序無法正常工作。我正在使用普通的客戶端服務器套接字。我用telnet測試過我的服務器,它工作正常,但是當我用我的android程序嘗試時,它不起作用(更多細節在第二個)。這裏是我的代碼:IOException並未提供足夠的信息
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傳遞的信息是否能提供任何見解。
您應該考慮在所有'Log.e()'方法的末尾添加異常。他們可以做'e(「tag」,「msg」)或'e(「tag」,「msg」,throwable)''。如果你記錄完整的可丟棄數據,你可能會得到更多的信息。 – Gray