You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过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:打开终端,输入ifconfigip addr,找到对应网络接口的inet地址
  • 端口号必须和服务器端完全匹配,差一个数字都连不上
运行流程
  1. 先启动接收端的server.py,看到“服务器已启动,等待连接...”的提示再往下走
  2. 启动发送端的client.py,发送端会显示消息已发送,接收端会立刻显示连接信息和收到的消息
常见问题排查
  • 连接超时:先确认两台电脑在同一局域网(比如连同一个WiFi/路由器),再检查服务器端IP有没有填错,防火墙有没有拦截
  • 收到乱码:确保发送和接收用的编码一致,示例里用的是utf-8,别改成其他编码
  • 服务器没反应:检查服务器端是不是先启动了,有没有报错

内容的提问来源于stack exchange,提问作者Malthe Have Musaeus

火山引擎 最新活动