ビデオ講義の例。背景:講師はPythonでもっともシンプルなWebサーバーを提供しました。彼はソケットを作成し、バインドし、リスンし、接続を受け取り、データを受信し、大文字でクライアントに送り返しました。その後、彼は欠点があると言った:このWebサーバーはシングルスレッドです。それからフォークしましょう。PythonのマルチスレッドWebサーバ
私は十分に例を理解することはできません。しかし、まず、プログラムは終了します(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
それは役に立ちません。 sudoを試してみる。ちなみに、私は少し質問を追加しました( "後で追加"を見てください)。 – Michael
これは役に立つかもしれません:http://www.harvard.edu/~fine/Tech/addrinuse.html – acw1668