传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP通信过程,首先打开服务器监听自己的网络通信端口(假设为7628),打开客户端,设置好要连接的ip地址和服务器的网络通信端口(7628),这样服务器监听到网络通信端口有连接,二者就建立了连接。
本文介绍Android TCP服务端的实现,源码见 github 项目 AndroidTCP。
1.TCP服务端开发的步骤
1.1 创建ServerSocket,绑定指定端口
1 2 3 4 5 6 7 8
| if (serverSocket == null) { serverSocket = new ServerSocket(ServerPort); }
|
1.2 监听连接请求,获取输入输出流
1 2 3 4 5 6
| clientSocket = serverSocket.accept();
in = clientSocket.getInputStream();
out = clientSocket.getOutputStream();
|
1.3 接收、发送数据
接收数据:
1 2 3 4 5 6 7 8
| int len = in.read(container); if (len > 0) { dealData(container, len); } else { isReceive = false; onConnectError(); }
|
发送数据:
1 2 3 4
| byte[] data = msg.getBytes(Charset.forName("GBK")); out.write(data);
|
1.4 定时检查服务允许状态
1 2 3 4 5 6
| if (timerWorking) { if (timerLength % 3000 == 0) { checkServerSocket(); } timerLength += TimerPeriod; }
|
1.5 关闭服务
1 2 3 4
| if (serverSocket != null) { serverSocket.close(); serverSocket = null; }
|
1.6 源码
源码位置:
https://github.com/yadiq/AndroidTCP/blob/master/app/src/main/java/com/hqumath/tcp/ui/main/TCPServer.java
2.效果图