#Python 的 TCP 编程
传输控制协议(Transmission Control Protocol) 是一种 面向连接、可靠传输 的网络通信协议,是现代互联网最核心的协议之一。
#客户端程序
TCP 客户端程序通常只需要连接到服务器然后收发数据即可。下面是一个示例,它向 tcpbin.com 的 4242 端口发送 hello\n,对方会原样返回。
1import socket 2 3# 创建 TCP socket 4sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 5 6# 建立链接 7sock.connect(('tcpbin.com', 4242)) 8 9# 发送数据 10sock.send('hello\n'.encode()) 11 12# 接收数据 13data = sock.recv(1024) 14print('收到:', data.decode()) 15
AF_INET表示使用 IPv4 地址,SOCK_STREAM表示使用 TCP- 地址参数是一个元组,第一个元素可以是域名、主机名或 IP 地址,第二个元素是端口
#服务器程序
TCP 服务器程序需要绑定并监听地址端口,等待客户端连接后进行收发数据。下面是一个示例,它监听本机所有 IPv4 地址的 4242 端口。 收到来自客户端的连接后,接收数据并原样返回。将上面客户端代码中的 tcpbin.com 改为 localhost 即可与此服务端通信。
1import socket 2 3# 创建 TCP socket,这个 socket 专门监听端口 4server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 5 6# 绑定地址端口,0.0.0.0 表示本机的所有 IPv4 地址 7server.bind(('0.0.0.0', 4242)) 8 9# 监听 10server.listen(5) 11 12# 循环接受连接 13while True: 14 sock, addr = server.accept() # 接受连接,创建新的 socket 15 print(f'收到了来自 {addr} 的连接') 16 data = sock.recv(1024) # 接收数据 17 sock.send(data) # 原样返回 18 sock.close() # 断开连接 19
listen的参数表示连接队列的大小,即在accept接受连接之前,最多缓存的连接个数。
《Python 的 TCP 编程》 是转载文章,点击查看原文。