1
我在Google和这个网站上做了大量的研究,对这个简单的主题有一个答案。我想要一个在python和其他客户端的TCP服务器之间的独家连接。第一个客户端连接到服务器,如果其他客户端尝试在服务器上连接,则必须拒绝它们。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)应该关闭其他客户端的连接。在生活中,第二个客户没有拒绝连接。 如果需要更多信息,我可以提供。
如果您想拒绝连接,您必须在第一个客户端连接后关闭服务器套接字。 – Daniel 2014-12-07 18:46:46
非常感谢。这是一个好方法。此外,我在while循环中包含了套接字的创建和绑定,因为它似乎无法重新打开一个封闭的套接字。 – LyonL 2014-12-08 18:33:57