如何创建只接受一个连接的套接字服务器?

时间:2016-06-24 07:21:08

标签: python sockets network-programming

我使用Python编写TCP服务器。我想要服务器 只接受客户端连接。

我使用listen函数

listen(1)

但服务器仍然可以接受多个连接。

2 个答案:

答案 0 :(得分:0)

来自the documentation

  

如果指定了积压,则必须至少为0(如果较低,则设置为0);它指定在拒绝新连接之前系统允许的未接受连接数。

因此,如果您使用listen(1),则允许一个未接受的连接。如果您不想允许任何未接受的连接,则必须使用listen(0)

答案 1 :(得分:0)

如果您只想要一个连接,请不要使用socket.accept()连接循环。

演示代码:

#!/usr/bin/python

import time
import socket


server = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_addr = ('127.0.0.1', 8080)
server.bind(server_addr)
server.listen(1)
print("listening on {}".format(server_addr))
client, client_addr = server.accept()

for i in range(10):
    client.send("num: {}\n".format(i))
    time.sleep(1)

raw_input('')