Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
@sleex: Du musst das Programm halt so schreiben, dass es sich nach ein paar Sekunden schliesst. Also merken wann der Startzeitpunkt ist, und dann regelmässig schauen ob seit dem ein paar Sekunden vergangen sind und gegebenenfalls aufhören das zu machen was das Programm halt so macht. Mehr kann man da so allgemein nicht zu sagen. Falls Du `trio` benutzt hilft das hier vielleicht weiter:
#!/usr/bin/env python3
import random
import trio
async def main():
some_seconds = random.randint(1, 10)
with trio.move_on_after(some_seconds):
while True:
print("something")
await trio.sleep(1)
print("Bye")
if __name__ == "__main__":
trio.run(main)
Falls Du `trio` nicht benutzt, hilft das überhaupt nicht.
Welches Problem willst Du denn *eigentlich* lösen?
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Wenn Du einfach nur warten möchtest, dann ist time.sleep das Mittel der Wahl. Bei bind sind eigentlich nur 127.0.0.1 oder 0.0.0.0 sinnvolle Werte, nicht aber die eigene IP-Adresse.
s ist ein schlechter Variablenname, weil nichtssagenden. server_socket wäre da besser. recv funktioniert nicht so, wie Du denkst. Da fehlt ein Protokoll, das beschreibt was eine Nachricht ist. Ebenso ist send falsch. Da wird nicht garantiert dass alles gesendet wird.
Denkst du nur. Man kann auch verbundenen Auges ueber die Strasse rennen, und dabei keinen Unfall haben. Heisst aber nicht, dass es sich dabei um das richtige Vorgehen handelt. Netzwerk ist komplexer, als dein Code es annimmt. Weder ist garantiert, das alle Daten bei send wirklich verschickt werden, noch ist es garantiert, dass alle Daten als ein Paket genauso ankommen, wie sie versandt wurden. Die koennen in beliebig zerteilten Haeppchen ankommen.