Ein Beispiel aus einer Videovorlesung. Hintergrund: Der Dozent gab einen einfachen Webserver in Python. Er erstellte einen Socket, verband ihn, machte Zuhören, akzeptierte eine Verbindung, empfing Daten und schickte sie in Großbuchstaben an den Client zurück. Dann sagte er, dass es einen Nachteil gibt: Dieser Webserver ist single-threaded. Dann lass uns abzweigen.Multithread-Webserver in Python
Ich kann das Beispiel nicht gut genug verstehen. Aber zuerst wird das Programm beendet (sys.exit()). Aber ich kann es nicht noch einmal ausführen:
socket.error: [Errno 98] Adresse bereits verwendet.
Ich versuche herauszufinden, welcher Prozess auf Port 8080 hört: netstat --listen | Grep 8080. Nichts.
Nun, was hört auf 8080? Und wie man es tötet?
später hinzugefügt: Es ist ein Gefühl, dass, wenn ich für einige Zeit warten (etwa 5-10 Minuten), ich das Programm wieder laufen kann.
import os
import socket
import sys
server_socket = socket.socket()
server_socket.bind(('', 8080))
server_socket.listen(10)
print "Listening"
while True:
client_socket, remote_address = server_socket.accept()
print "PID: {}".format(os.getpid())
child_pid = os.fork()
print "child_pid {}".format(child_pid)
if child_pid == 0:
request = client_socket.recv(1024)
client_socket.send(request.upper())
print '(child {}): {}'.format(client_socket.getpeername(), request)
client_socket.close()
sys.exit()
else:
client_socket.close()
server_socket.close()
Versuchen Sie 'netstat -tulnp | grep 8080' – citaret
Es hilft nicht. Durch Sudo versucht. Übrigens habe ich der Frage ein wenig hinzugefügt (siehe "Später hinzugefügt"). – Michael
Dies kann helfen: http://hea-www.harvard.edu/~fine/Tech/addrinuse.html – acw1668