0
視頻講座的示例。背景:講師給出了python中最簡單的web服務器。他創建了一個套接字,將其綁定,監聽,接受連接,接收數據並以大寫形式將其發送回客戶端。然後他說有一個缺點:這個Web服務器是單線程的。然後讓我們分叉。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
它沒有幫助。嘗試通過sudo。順便說一句,我在問題上加了一點(請看看「稍後添加」)。 – Michael
這可能有助於:http://hea-www.harvard.edu/~fine/Tech/addrinuse.html – acw1668