【发布时间】:2016-03-09 09:06:16
【问题描述】:
我有一个从 TCP 套接字发送和接收数据的 Android 代码。它工作正常,但是,当套接字突然关闭时(例如从 wi-fi 断开连接),我没有收到任何错误,无论是读取还是写入。 在某些设备中,读取线程会抛出异常,但在其他设备(注4)中不会抛出异常,并且应用程序无法检测到套接字是否关闭。
编写代码如下
try {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write(msg);
writer.flush();
}catch (IOException e){
e.printStackTrace();
}
阅读线程:
try {
int bytesRead;
String print = new String();
print = "";
InputStream is = socket.getInputStream();
while (socket.isConnected()) {
bytesRead = is.read();
if (bytesRead != -1) {
print += (char) bytesRead;
if (bytesRead == ']') {
final String toprint = new String(print);
try{
((socketListener) Ui).onSocketListen(ip,toprint);
}catch(NullPointerException ex){
}
print = "";
}
} else {
socket.close();
socket = new Socket();
break;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
socket = new Socket();
e.printStackTrace();
} catch (Exception e){
e.printStackTrace();
}
【问题讨论】:
标签: java android sockets exception-handling tcpclient