2016-11-15 2 views
0

Я пытаюсь установить флаг keep alive для моего сокета. Я использую Python 3.5.2. Вот код:Python 3.5.2 Socket Keep-Alive

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

Смежные вопросы