You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:15:15