这两天简单地看了下C++的socket通信,说起socket通信,就不得不提及TCP/IP 协议,这个协议大名鼎鼎,我想看过编程的至少听说过。在TCP/IP协议下,最常见的就是TCP和UDP,不过C++中的UDP我还没有看过,今天就简单说说C++中的TCP通信,大致分成下面四部分:
- TCP简介
- TCP通信流程
- Windows下TCP通信API的简介
- TCP通信的C++代码
1,TCP简介
TCP提供了一个完全可靠的,面向连接的,全双工的(包含两个独立且方向相反的连接)流传输服务,允许两个应用程序建立一个连接,并在全双工的方向上发送数据,然后终止连接。每一个TCP连接都可靠的简历连接并完善的终止,在终止发生前,所有数据都会被可靠地传送。
TCP通信的客户端和服务端每次通信都会有3次握手的过程,这3次握手,确保数据能够准确地发送到对方。TCP通信是分为客户端和服务端的。
2,TCP通信流程
TCP通信服务端和客户端代码是不同的。首先,服务端有一个ServerSocket,初始化以后(包括设置IP和端口,绑定监听等过程),这些都设置好以后,就可以使用accept()方法等待客户端连接了,这个方法是阻塞的。一旦连接成功,就会返回一个新的Socket,使用这个Socket就可以接收数据和发送数据了。客户端自始始终都只有一个Socket,这个Socket初始化以后,使用connect()方法和服务器进行连接,连接成功后,这个Socket就可以进行通信了。
服务端