Пример из видео-лекции. Предыстория: преподаватель дал простейший веб-сервер в python. Он создал сокет, связал его, прослушал, принял соединение, получил данные и отправил обратно клиенту в верхнем регистре. Затем он сказал, что есть недостаток: этот веб-сервер является однопоточным. Тогда давайте развить.Многопоточный веб-сервер в Python
Я не могу понять пример достаточно хорошо. Но для начала программа выходит (sys.exit()). Но я не могу запустить его снова:
socket.error: [Errno 98] Адрес уже используется.
Я пытаюсь выяснить, какой процесс прослушивает порт 8080: netstat --listen | grep 8080. Ничего.
Хорошо, что слушает 8080? И как его убить?
Добавлено позже: Существует ощущение, что если я выждать некоторое время (скажем, 5-10 минут), я могу запустить программу снова.
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()
Попробуйте 'netstat -tulnp | grep 8080' – citaret
Это не поможет. Пробовал через судо. Кстати, я добавил немного к вопросу (пожалуйста, взгляните на «Добавлено позже»). – Michael
Это может помочь: http://hea-www.harvard.edu/~fine/Tech/addrinuse.html – acw1668