python 3 'MarkerServer' 对象没有属性 'setsockopt'
python 3 'MarkerServer' object has no attribute 'setsockopt'
我有一个旧的 python 27 代码,我正试图将其移植到 python 35,并且对以下部分有疑问:
class MarkerServer(asyncore.dispatcher):
def __init__(self, queue, proto):
asyncore.dispatcher.__init__(self)
self.queue = queue
if proto.lower() == 'tcp':
logger.debug('Opening TCP socket.')
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
self.setblocking(0)
self.bind(('', PORT))
self.listen(5)
elif proto.lower() == 'udp':
logger.debug('Opening UDP socket.')
self.create_socket(socket.AF_INET, socket.SOCK_DGRAM)
self.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.setblocking(0)
self.bind(('', PORT))
handler = MarkerHandler(self, self.queue)
else:
这将返回以下错误:
self.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
AttributeError: 'MarkerServer' object has no attribute 'setsockopt'
感谢杰森哈珀的评论。
我意识到 python 35 的 asyncore 模块中还有一个更深层次的问题。似乎并非所有方法都已移植并产生错误。
修改模块后问题解决
我有一个旧的 python 27 代码,我正试图将其移植到 python 35,并且对以下部分有疑问:
class MarkerServer(asyncore.dispatcher):
def __init__(self, queue, proto):
asyncore.dispatcher.__init__(self)
self.queue = queue
if proto.lower() == 'tcp':
logger.debug('Opening TCP socket.')
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
self.setblocking(0)
self.bind(('', PORT))
self.listen(5)
elif proto.lower() == 'udp':
logger.debug('Opening UDP socket.')
self.create_socket(socket.AF_INET, socket.SOCK_DGRAM)
self.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.setblocking(0)
self.bind(('', PORT))
handler = MarkerHandler(self, self.queue)
else:
这将返回以下错误:
self.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
AttributeError: 'MarkerServer' object has no attribute 'setsockopt'
感谢杰森哈珀的评论。 我意识到 python 35 的 asyncore 模块中还有一个更深层次的问题。似乎并非所有方法都已移植并产生错误。 修改模块后问题解决