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

PySocks无法调用.listen()与.accept()方法的问题求助及适配疑问

问题分析与解决方案

为什么会出现WinError 10022?

你完全搞反了PySocks的使用场景。socks.socksocket的设计目的是让客户端socket通过代理服务器发起对外连接,而非绑定本地端口监听连接。当你调用set_proxy()后,这个socket已被配置为代理客户端模式,此时调用listen()属于非法操作,自然会抛出无效参数错误。

PySocks适合替代标准Socket做监听吗?

不适合。PySocks是对标准socket的客户端扩展,仅负责将客户端流量转发到代理服务器,本身不支持服务器端的listen()、accept()等监听相关操作。如果你的需求是监听本地端口并接收外部连接,直接使用标准socket模块即可。

正确用法示例

1. 用PySocks实现客户端通过代理连接外部服务

import socks

# 创建socksocket并配置代理
client_socket = socks.socksocket()
client_socket.set_proxy(socks.HTTP, "localhost", 8181)

# 连接目标服务器(以百度为例)
client_socket.connect(("www.baidu.com", 80))
client_socket.send(b"GET / HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n")
response = client_socket.recv(4096)
print(response.decode())
client_socket.close()

2. 用标准Socket实现本地监听服务

import socket

# 创建标准socket并监听
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("localhost", 8181))
server_socket.listen(5)

print("Proxy Server has bound to localhost and port 8181")
while True:
    client_socket, client_address = server_socket.accept()
    print(f"Connection from {client_address} has been accepted")
    # 处理客户端请求逻辑...
    client_socket.close()

内容的提问来源于stack exchange,提问作者Qerxo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:32:39