首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python asyncore套接字,端口无法重用

Python asyncore套接字,端口无法重用
EN

Stack Overflow用户
提问于 2015-10-21 08:27:48
回答 1查看 268关注 0票数 1

这是我的服务器代码,我已经写好了self.set_reuse_addr()

代码语言:javascript
复制
class ImageServer(asyncore.dispatcher):
    def __init__(self,port):
        asyncore.dispatcher.__init__(self)
        self.client = None      
        self.port = port 
        self.clientSocket = None
        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
        self.set_reuse_addr()
        self.bind(("192.168.11.2",self.port))
        self.listen(20)
        print "[*] Listening ..."

仍然得到这个错误,端口重用

代码语言:javascript
复制
self.bind(("192.168.11.2",self.port))

File "/usr/lib/python2.7/asyncore.py", line 342, in bind
return self.socket.bind(addr)

File "/usr/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)

socket.error: [Errno 98] Address already in use

有没有人知道如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2018-01-09 18:41:23

使用SO_REUSEADDR

  1. 允许绑定到0.0.0.0:端口和192.168.11.2:端口
  2. 允许绑定到TIME_WAIT中的套接字,但您无法通过建立到相同目标地址的连接r:上一个TIME_WAIT套接字所在的端口。

SO_REUSEPORT将允许这样做(对多个进程重用addr:port ),但需要注意的是,客户端连接可能会导致EADDRINUSE,因为它无法区分旧的和新的套接字信息。

代码语言:javascript
复制
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33249011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档