Python Socket跨设备(PC-Android)通信无响应问题求助
Socket连接无响应问题排查与解决
我尝试建立Socket连接,但终端一直处于等待状态,无任何反应。原本以为是Android设备的问题,但在同一WiFi下的两台电脑间测试后,情况依旧。
原代码
Server.py
import socket HOST = "192.168.1.37" PORT = 8820 # Use a breakpoint in the code line below to debug your script. my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) my_socket.bind((HOST, PORT)) my_socket.listen(5) while True: karsisoket, adress = my_socket.accept() print(f"{adress}'e bağlanıldı") message = karsisoket.recv(1024).decode('utf-8') print(f"Gelen mesaj: {message}") karsisoket.send(f"EKSİK OLMA KARDEŞİM".encode('utf-8')) karsisoket.close()
Client.py
import socket IP = "192.168.1.37" PORT = 8820 socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) socket.connect((IP,PORT)) socket.send("SELAMM".encode('utf-8')) print(socket.recv(1024).decode('utf-8'))
问题分析与修复方案
1. 核心问题排查点
- IP绑定限制:服务器绑定了固定IP
192.168.1.37,如果服务器IP发生变动,客户端将无法连接。建议改为绑定所有网卡地址0.0.0.0。 - 端口拦截:服务器或客户端的防火墙可能拦截了8820端口的TCP连接,需要确保该端口开放。
- 变量命名冲突:客户端中用
socket作为套接字实例的变量名,覆盖了导入的socket模块,虽不直接导致连接失败,但属于不规范写法。 - 连接顺序错误:必须先启动服务器,再启动客户端,否则客户端会因无法找到服务端而阻塞。
2. 修改后的代码
Server.py
import socket HOST = "0.0.0.0" # 绑定所有可用网卡,适配IP变动场景 PORT = 8820 # 启动提示,确认服务器正常运行 print(f"服务器已启动,等待连接...监听端口:{PORT}") my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) my_socket.bind((HOST, PORT)) my_socket.listen(5) while True: karsisoket, adress = my_socket.accept() print(f"{adress}'e bağlanıldı") message = karsisoket.recv(1024).decode('utf-8') print(f"Gelen mesaj: {message}") karsisoket.send(f"EKSİK OLMA KARDEŞİM".encode('utf-8')) karsisoket.close()
Client.py
import socket IP = "192.168.1.37" # 替换为服务器实际的本地IP PORT = 8820 # 避免覆盖socket模块,改用client_socket命名 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((IP, PORT)) client_socket.send("SELAMM".encode('utf-8')) print(client_socket.recv(1024).decode('utf-8')) client_socket.close() # 显式关闭连接,释放资源
3. 额外排查步骤
- 启动服务器后,确认终端输出启动提示,说明服务端正常监听。
- 在客户端机器执行
ping 192.168.1.37,确认网络连通。 - 用
telnet 192.168.1.37 8820测试端口是否开放,若能连接则端口无拦截。
内容的提问来源于stack exchange,提问作者Potatox
相关产品推荐
相关产品推荐

