我在谷歌和本网站上做了大量研究,以回答这个简单的话题。我想在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)应关闭其他客户端的连接。在生活中,第二个客户端没有被拒绝的连接。 如果需要进一步的信息,我可以提供。
答案 0 :(得分:1)
如果要拒绝连接,则必须在第一个客户端连接后关闭服务器套接字。 - 丹尼尔