如何通过Sockets在两台笔记本的Python 3程序间传输字符串?
嘿,我来帮你搞定两台笔记本之间用Python传消息的问题!其实Socket通信没那么复杂,可能你之前的代码没踩对关键点,我给你一套能直接跑通的示例,再把容易踩的坑说清楚。
第一步:搭建消息接收端(服务器)
先在你要接收消息的笔记本上运行这段代码,保存为server.py:
# server.py - 消息接收端 import socket # 配置参数 HOST = '0.0.0.0' # 监听所有可用的网络接口,同一局域网内的设备都能连 PORT = 65432 # 选一个1024以上未被占用的端口,端口冲突就换一个 # 创建TCP Socket对象 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) # 绑定IP和端口 s.listen() # 开始监听连接请求 print(f"服务器已启动,等待连接... 监听端口:{PORT}") # 接受客户端连接 conn, addr = s.accept() with conn: print(f"已连接来自 {addr} 的设备") while True: # 每次最多接收1024字节的数据 data = conn.recv(1024) if not data: # 客户端断开连接时会收到空数据 break # 把字节转成字符串打印 print(f"收到消息:{data.decode('utf-8')}")
服务器端注意事项:
0.0.0.0是让程序监听所有网卡,不管你用的是WiFi还是有线网,都能接收到连接- 运行前记得检查防火墙:要么临时关闭防火墙测试,要么给这个端口添加TCP允许规则,不然连接会被拦截
- 如果运行时报错“地址已在使用”,直接把
PORT改成别的数就行,比如65433
第二步:搭建消息发送端(客户端)
在你要发消息的笔记本上运行这段代码,保存为client.py:
# client.py - 消息发送端 import socket # 这里必须填接收端笔记本的**局域网IP地址**! HOST = '192.168.1.100' # 替换成你的服务器端IP PORT = 65432 # 必须和服务器端的端口完全一致 # 创建Socket并连接服务器 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) message = "Test message 123" # 你要发送的消息 # 把字符串转成字节格式发送 s.sendall(message.encode('utf-8')) print(f"已发送消息:{message}")
客户端关键提醒:
- 一定要填对服务器端的局域网IP:怎么查?
- Windows:打开命令提示符,输入
ipconfig,找到“无线局域网适配器WLAN”或“以太网”下的IPv4地址 - macOS/Linux:打开终端,输入
ifconfig或ip addr,找到对应网络接口的inet地址
- Windows:打开命令提示符,输入
- 端口号必须和服务器端完全匹配,差一个数字都连不上
运行流程
- 先启动接收端的
server.py,看到“服务器已启动,等待连接...”的提示再往下走 - 启动发送端的
client.py,发送端会显示消息已发送,接收端会立刻显示连接信息和收到的消息
常见问题排查
- 连接超时:先确认两台电脑在同一局域网(比如连同一个WiFi/路由器),再检查服务器端IP有没有填错,防火墙有没有拦截
- 收到乱码:确保发送和接收用的编码一致,示例里用的是
utf-8,别改成其他编码 - 服务器没反应:检查服务器端是不是先启动了,有没有报错
内容的提问来源于stack exchange,提问作者Malthe Have Musaeus




