解决socket.error: [Errno 98] Address already in use问题

来源:互联网 发布:胖熊数据库微博 编辑:程序博客网 时间:2024/05/18 01:53

如果python中socket 绑定的地址正在使用,往往会出现错误,

在linux下:

            则会显示“ socket.error: [Errno 98] Address already in use”

在windows下:

          则会显示 “socket.error: [Errno 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次”

 

这是因为socket默认不支持地址复用,如果要复用需要显示设定,即在绑定前调用setsockop函数t让套接字允许地址重用:socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

self.recSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)    self.recSocket.settimeout(CHECK_TIMEOUT)  self.recSocket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)    self.recSocket.bind(('', UDP_PORT)) 
0 0