Python 3.5.2套接字保持活动
问题描述:
我正在尝试为套接字设置一个活动状态标志。我正在使用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'
我怎样才能解决这个问题?
答
如何导入套接字库以及如何定义服务器套接字?这在您的代码片段中缺少。
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