TCP协议发送/接收数据简单实现
背景
Demo 基于 Java 实现简单的 TCP 传输 / 接收协议
词义百科
TCP 协议 (传输控制协议)
TCP 协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,再传输数据。它提供了两台计算机之间的可靠无差错的数据传输。在 TCP 连接中必须要明确客户端与服务器,由客户端向服务器发送连接请求,每次连接的创建都需要经过 “三次握手”
三次握手:TCP 协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠
第一次握手:客户端向服务器发出连接请求,等待服务器确认
第二次握手:服务器向客户端回送一个响应,通知客户端收到连接请求
第三次握手:客户端再次向服务器发送确认信息,确认连接
完成三次握手,连接建立后,客户端和服务器可以开始数据传输,由于这种面向连接的特性。TCP 协议可以保证传输数据的安全,所以应用十分广泛,比如:文件上传、文件下载、浏览页面三次握手示意图
四次挥手示意图
发送端 Demo
package tcp;import java.io.*;import java.net.InetAddress;import java.net.Socket;/*** TCP 发送数据步骤* 1.创建客户端socket对象* 2.获取输出流,写数据* 3.释放资源*/public class ClientDemo {public static void main(String[] args) throws IOException {// 创建客户端socket对象// 创建流套接字并将其连接到指定IP地址的指定端口号Socket socket = new Socket(InetAddress.getByName("192.168.31.162"),9002);// 获取输出流,写数据System.out.println("input you data");BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 封装输出流对象BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));String line ;//获取输出流,写数据;while ((line = br.readLine()) != null){// 获取输出流对象bw.write(line);bw.newLine();bw.flush();}// 释放资源socket.close();}}
接收端 Demo
package tcp;import java.io.*;import java.net.Socket;import java.net.ServerSocket;/*** TCP 接收数据步骤* 1.创建服务端socket对象* 2.监听客户端连接,返回一个socket对象* 3.获取输入流,读数据,并把数据显示在控制台* 4.释放资源*/public class ServerDemo {public static void main(String[] args) throws IOException {// 创建服务端socket对象ServerSocket serverSocket = new ServerSocket(9002);// 监听客户端连接,返回一个socket对象Socket socket = serverSocket.accept();// 获取输入流,读数据,并把数据显示在控制台BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));String line;while ((line = br.readLine()) != null){System.out.println(line);}// 释放资源serverSocket.close();}}
