国际访客建议访问 Primers 编程伙伴 国际服 以获得更好的体验。 快速访问 Python 网络编程 TCP

# Python 的 TCP 编程

传输控制协议(Transmission Control Protocol) 是一种 面向连接、可靠传输 的网络通信协议,是现代互联网最核心的协议之一。

# 客户端程序

TCP 客户端程序通常只需要连接到服务器然后收发数据即可。下面是一个示例,它向 tcpbin.com4242 端口发送 hello\n,对方会原样返回。

import socket

# 创建 TCP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 建立链接
sock.connect(('tcpbin.com', 4242))

# 发送数据
sock.send('hello\n'.encode())

# 接收数据
data = sock.recv(1024)
print('收到:', data.decode())
  • AF_INET 表示使用 IPv4 地址,

  • SOCK_STREAM 表示使用 TCP

  • 地址参数是一个元组,第一个元素可以是域名、主机名或 IP 地址,第二个元素是端口

# 服务器程序

TCP 服务器程序需要绑定并监听地址端口,等待客户端连接后进行收发数据。下面是一个示例,它监听本机所有 IPv4 地址的 4242 端口。 收到来自客户端的连接后,接收数据并原样返回。将上面客户端代码中的 tcpbin.com 改为 localhost 即可与此服务端通信。

import socket

# 创建 TCP socket,这个 socket 专门监听端口
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定地址端口,0.0.0.0 表示本机的所有 IPv4 地址
server.bind(('0.0.0.0', 4242))

# 监听
server.listen(5)

# 循环接受连接
while True:
    sock, addr = server.accept()        # 接受连接,创建新的 socket
    print(f'收到了来自 {addr} 的连接')
    data = sock.recv(1024)              # 接收数据
    sock.send(data)                     # 原样返回
    sock.close()                        # 断开连接
  • listen 的参数表示连接队列的大小,即在 accept 接受连接之前,最多缓存的连接个数。

本文 更新于: 2025-05-31 19:53:13 创建于: 2025-05-31 19:53:13