2016-11-15 41 views
0

我正在尝试为套接字设置一个活动状态标志。我正在使用Python 3.5.2。下面的代码:Python 3.5.2套接字保持活动

ConnectionSocket, address = ServerSocket.accept() 

ConnectionSocket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE,1) 
ConnectionSocket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 1) 
ConnectionSocket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 3) 
ConnectionSocket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 5) 

但我得到的错误:

Traceback (most recent call last): 
    File "C:/Users/User/Desktop/QuizServer/QuizServer/MultiplexingServer.py", line 135, in <module> 
    ConnectionSocket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE,1) 
AttributeError: type object 'socket' has no attribute 'SOL_SOCKET' 

我怎样才能解决这个问题?

回答

0

如何导入套接字库以及如何定义服务器套接字?这在您的代码片段中缺少。

import socket 

ServerSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
ServerSocket.bind((socket.gethostname(), 4224)) 
ServerSocket.listen(0) 
ConnectionSocket, address = ServerSocket.accept() 


ConnectionSocket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE,1) 
ConnectionSocket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 1) 
ConnectionSocket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 3) 
ConnectionSocket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 5) 

此代码与Python3.5一起使用,不会产生任何错误。

Hannu

相关问题