Ich bin neu in Socket-Programmierung und versuchen, wieder in Python zu bekommen. Ich wollte ein einfaches TCP-Programm schreiben, das kontinuierlich eine Verbindung aufrechterhält, bis ein Endzustand erreicht ist, in diesem Fall wird "Schließen" vom Client gesendet.Python kontinuierliche TCP-Verbindung
Dies funktioniert gut für die erste Iteration, aber es friert auf der zweiten Sache, die ich sende, und ich bin mir nicht sicher, warum. Könnte jemand bitte erklären, warum mein Programm einfriert oder wie dies besser umgesetzt wird?
TCPServer.py
from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
serverSocket.bind(('', serverPort))
serverSocket.listen(1)
print('The server is ready to recieve')
while True:
connectionSocket, addr = serverSocket.accept()
sentence = connectionSocket.recv(1024).decode()
if(sentence == "close"):
connectionSocket.close()
capSentence = sentence.upper()
connectionSocket.send(capSentence.encode())
TCPClient.py
from socket import *
serverName = 'localhost'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
while(1):
sentence = raw_input('input sentence: ')
if(sentence == "close"):
break
clientSocket.send(sentence.encode())
retSentence = clientSocket.recv(1024)
print('From server; ', retSentence.decode())
clientSocket.close()
Ich habe die Änderung der Verbindungsschleife und das scheint einige der Probleme zu beheben Ich war in diesem speziellen Fall haben, aber würde ich brauche die Art und Weise zu ändern, die ich darüber werde, wenn ich mehrere Kunden gesucht sich asynchron mit dem Server verbinden? – user2860682
@ user2860682 Ja, Sie sollten eine Ereignisschleife verwenden, wenn Sie mehrere Verbindungen gleichzeitig verarbeiten möchten. Etwas wie verdreht oder asynchron. – cdhowie