PC SocketServer、手机SocketClient
当SocketServer断开或发生Wifi网络变化的时候,SocketClient应该如何处理异常。
private class ReceiveThread extends Thread
{
private InputStream mInputStream = null;
private byte[] buf ;
private String str = null;
ReceiveThread(Socket s)
{
try
{
//获得输入流
this.mInputStream = s.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run()
{
while(!stop)
{
this.buf = new byte[512];
//读取输入的数据(阻塞读)
try {
this.mInputStream.read(buf);
} catch (IOException e1) {
e1.printStackTrace();
Message msg = new Message();
msg.what = 2;
msg.obj ="断开";
//发送消息
mHandler.sendMessage(msg);
stop = true;
mReceiveThread.interrupt();
break;
}catch (Exception e) {
Message msg = new Message();
msg.what = 2;
msg.obj ="断开";
//发送消息
mHandler.sendMessage(msg);
stop = true;
mReceiveThread.interrupt();
}
//字符编码转换
try {
this.str = new String(this.buf, "GB2312").trim();
} catch (UnsupportedEncodingException e) {
Log.e("通讯异常2", e.toString());
e.printStackTrace();
}
Message msg = new Message();
msg.what = 1;
msg.obj = this.buf;
//发送消息
mHandler.sendMessage(msg);
}
}
}