ich würde mal eure Hilfe brauchen. Aktuell versuche ich auf einem Server, ein kleines Python Tool zu schreiben, was ständig auf ankommende Anfragen meiner Client(s) wartet und dann angibt, ob ein bestimmtest Programm läuft (return True, else False). Das klappt aktuell nur einmal, danach kommt der Fehler: ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
Nun möchte ich es eigentlich so haben, dass ein Client zu jeder Zeit eine Verbindung aufbauen kann und den Status abfragen kann. Ich habe bereits die s.close() Anweisungen aus den Quellcodes genommen, die aktuell so ausschen:
Serverseite:
Code: Alles auswählen
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("", 50000))
s.listen(1)
while True:
komm, addr = s.accept()
while True:
data = komm.recv(1024)
if not data:
print("no data")
komm.close()
break
print("[{}] {}".format(addr[0], data.decode()))
# Check, if GAM is running. Return boolTrue / False
status = "mainframe.exe" in (p.name() for p in psutil.process_iter())
komm.send(str(status).encode())
Code: Alles auswählen
def init_socket(self):
""" Only create one instance and return error, if no connection possible"""
if self.create_instance_socket == True:
try:
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.s.connect(('ip_des_servers', 50000))
self.create_instance_socket = False
except ConnectionRefusedError:
self.create_instance_socket = True
@pyqtSlot()
def run(self):
while True:
try:
self.init_socket()
nachricht = "test von mir"
self.s.send(nachricht.encode())
status_recieved = self.s.recv(1024)
print(status_recieved)
print("[{}] {}".format('ip_des_servers', status_recieved.decode()))
except OSError as o:
self.status.emit("No connection to target machine")
Vielen Dank schonmal