启动Socket
ServerSocketThread server=new ServerSocketThread();
server.start();
ServerSocketThread类
public class ServerSocketThread extends Thread {
public static Handler mHandler;
private Message msg;
private DataInputStream dinput;
private Socket socket = null;
private ServerSocket serverSocket = null;
@Override
public void run() {
int port = 5111;// 监听端口
XLog.d("开启监听端口:" + port);
try {
serverSocket = new ServerSocket(port);
// 轮流等待请求
while (connectStatus) {
try {
// 阻塞等待,每接收到一个请求就创建一个新的连接实例
socket = serverSocket.accept();
socket.setOOBInline(true);
// socket.setKeepAlive(true);
socket.setSoTimeout(1000);
XLog.d("连接客户端地址:" + socket.getRemoteSocketAddress());
dinput = new DataInputStream(socket.getInputStream());
byte[] line = new byte[1024];
// String epcStr = Tools.Bytes2HexString(line, dinput.read(line));
// if (epcStr.length() >= 12) {
// returnMessage(epcStr.substring(20, 32));
// }
} catch (SocketTimeoutException ex) {
ex.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
XLog.e("qqq" + e.getMessage());
}
}
}
} catch (IOException e) {
XLog.e(e.getMessage());
} finally {
try {
socket.close();
} catch (Exception e) {
XLog.e(e.getMessage());
}
}
}
/**
* @steps read();
* @effect socket服务端得到返回数据并发送到主界面
*/
public void returnMessage(String data) {
msg = new Message();
msg.what = RECEIVE_MESSAGES;
msg.obj = data;
mHandler.sendMessage(msg);
}
/**
* 关闭socket服务
*/
public void closeServer() {
if (socket == null || socket.isClosed()) {
return;
}
try {
if (!socket.isClosed()) {
socket.close();
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}