什么是 TCP 编程
TCP 编程是建立在 TCP 协议上的 Socket 编程
什么是 TCP 协议
TCP (Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。
什么是 Socket
- 所谓 Socket 通常也称作“套接字”,用于描述 IP 地址和端口,是一个通信链的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。
- Socket 是连接运行在网络上的两个程序间的双向通信的端点。
- 网络通讯其实指的就是 Socket 间的通讯。
- 通讯的两端都有 Socket,数据在两个 Socket 之间通过 IO 来进行传输。
TCP 编程案例
- 建立服务器
- 建立客户端并且连接服务端
- 客户端向服务器发送请求--第一次握手
- 服务器接收到客户端的请求,并且响应客户端--第二次握手
- 客户端接收到服务器的响应--第三次握手
// 客户端
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",8888);
Scanner sc = new Scanner(System.in);
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
byte[] b = new byte[1024];
int len;
try{
while(true){
os.write(("客户端:"+sc.nextLine()).getBytes());
len = is.read(b);
System.out.println(new String(b,0,len));
}
}finally {
CloseUtils.closeAll(os,is,socket);
}
}
//服务端
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8888);
Socket socket = server.accept();
Scanner sc = new Scanner(System.in);
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
byte[] b = new byte[1024];
int len;
try{
while(true){
len = is.read(b);
System.out.println(new String(b,0,len));
os.write(("服务端:"+sc.nextLine()).getBytes());
}
}finally {
CloseUtils.closeAll(is,os,socket);
}
}
什么是三次握手
TCP 是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 信息。
网友评论