• 预备
  • 基础语法
  • 容器类型
  • 函数
  • 面向对象
  • 输入输出
  • 进程控制
  • 线程控制
  • 正则表达式
  • 网络编程
  • 图形界面
  • 常见问题
  • API 帮助手册

  • 设置

1253

6 分钟

#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/5/13 18:02:41

更新于 2025/5/13 18:02:41