【问题标题】:Python 3.5.2 Socket Keep-AlivePython 3.5.2 套接字保持活动
【发布时间】:2016-11-15 23:16:24
【问题描述】:

我正在尝试为我的套接字设置一个保持活动标志。我正在使用 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'

我该如何解决这个问题?

【问题讨论】:

    标签: python python-3.x sockets keep-alive


    【解决方案1】:

    如何导入套接字库以及如何定义服务器套接字?您的代码 sn-p 中缺少此内容。

    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,不会产生任何错误。

    汉努

    【讨论】:

      猜你喜欢
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 2014-03-19
      • 2021-12-26
      • 1970-01-01
      • 2020-12-20
      相关资源
      最近更新 更多