【问题标题】:Python, make an exclusive TCP connectionPython,建立一个独占的TCP连接
【发布时间】:2014-12-07 18:34:16
【问题描述】:

我对 Google 和这个网站进行了大量研究,以便为这个简单的话题找到答案。我想要 python 中的 TCP 服务器和其他客户端之间的独占连接。第一个客户端连接到服务器,如果其他客户端尝试在服务器上连接,它们必须被拒绝。

我只能管理服务端代码,协议和客户端不可编辑。

# 1) Socket creation
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2) binding
try:
    mySocket.bind((HOST, PORT))
except socket.error:
    print "socket connection failed"
    sys.exit()


while 1:
    # 3) Waiting for a client
    print "Ready, waiting for connection"
    try :
        mySocket.listen(0)
    except socket.error:
        print "connection lost"
        sys.exit()

    # 4) Accept connection
    connexion, adresse = mySocket.accept()
    print "Client connecté, adresse IP %s, port %s" % (adresse[0], adresse[1])

    while 1:
        # infinite loop while the client is connected. Therorically for ever
        try :
           msgClient = connexion.recv(1024)
        except socket.error:
           # connection lost
           break;

        # protection against empty packet
        if len(msgClient) == 0 :
           break;
        #[Here is my code to process incoming packets]
        bla bla bla 
    print "Connection lost"

当我阅读套接字手册时,调用函数listen(0) 应该关闭其他客户端的连接。在生活中,第二个客户端没有拒绝连接。 如果需要更多信息,我可以提供。

【问题讨论】:

  • 如果要拒绝连接,则必须在第一个客户端连接后关闭服务器套接字。
  • 非常感谢。这是个好办法。此外,我在 while 循环中包含了套接字创建和绑定,因为似乎无法重新打开已关闭的套接字。

标签: python sockets tcp


【解决方案1】:

如果你想拒绝连接,你必须在第一个客户端连接后关闭服务器套接字。 ——丹尼尔

【讨论】:

    猜你喜欢
    • 2012-11-11
    • 2018-01-31
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2016-10-26
    • 2015-10-01
    • 2011-07-18
    相关资源
    最近更新 更多