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

使用Python Socket库开发信使程序的IP配置问题求助

Python Socket信使程序IP配置问题解决方案

问题描述

我想用Python Socket库开发一款信使程序,分为服务端和客户端,二者处于同一网络环境。以下是我的代码:

服务端代码

import socket
import os
os.system('clear')
s = socket.socket()
ip = 'localhost'
port = 9999
s.bind((ip,port))
s.listen()
print ('please wait...')
c , addr =s.accept()
print ('someone has joined!')

class color : 
    GREEN = '\033[92m'
    RED = '\033[91m'
    WHITE = '\033[0m'

while True :
    msg = input(color.RED + 'your message: ' )
    c.send(msg.encode('utf8'))
    print (color.GREEN + c.recv(1024).decode())

客户端代码

import socket
import os
os.system('clear')
s=socket.socket()
ip='192.168.1.3'
port=9999
s.connect((ip,port))
print('you have been connected' )
class color :
    GREEN = '\033[92m'
    RED = '\033[91m'
    WHITE = '\033[0m'

while True:
    print (color.RED + s.recv(1024).decode())
    msg = input(color.GREEN + 'your message : ')
    s.send(msg.encode('utf8'))

我需要为两端设置正确的IP地址,但尝试多种方法均无效,恳请提供可行方案。

尝试方法及报错

  • 方法1:将服务端IP设为localhost、gethostname或gethostbyname返回值:服务端运行正常,但客户端无法连接。
  • 方法2:将服务端IP设为如192.168.0.3这类地址:服务端抛出错误:OSError: [WinError 10049] 请求的地址在其上下文中无效。
  • 补充:尝试推荐方法后,客户端报错:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

解决方案

1. 修正服务端绑定地址

服务端不要绑定到特定IP,改为绑定到0.0.0.0,这样可以监听所有可用的网络接口,避免IP配置错误导致的绑定失败:

ip = '0.0.0.0'

2. 获取服务端局域网IP

在服务端机器上执行对应命令获取真实局域网IP:

  • Windows:打开命令提示符,输入ipconfig,找到对应网络适配器下的IPv4地址(如192.168.1.XX)。
  • Linux/macOS:打开终端,输入ifconfig或ip addr,找到对应网络接口的inet地址。

3. 配置客户端连接地址

将客户端代码中的ip变量修改为服务端的局域网IP,例如服务端IP为192.168.1.5,则客户端代码:

ip='192.168.1.5'

4. 排查连接拒绝问题

若仍出现WinError 10061,按以下步骤排查:

  • 确保先启动服务端,再运行客户端。
  • 确认服务端和客户端处于同一局域网(连接同一WiFi或网线)。
  • 临时关闭服务端机器的防火墙测试(测试通过后可将程序添加到防火墙白名单)。
  • 检查端口9999是否被占用:Windows用netstat -ano | findstr :9999,Linux/macOS用lsof -i :9999,若被占用则更换端口。

内容的提问来源于Stack Exchange,提问作者Parsa Ad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:50:27