我一直在尋找SocketServer
的文檔。我從文檔中複製了TCP服務器代碼,並且運行良好。然而,我注意到,在我的終端每當我CTRL-c'ed出來的方案,然後嘗試再次運行它,我會得到以下錯誤:SocketServer:擺脫'[Errno 98]地址已在使用'
socket.error: [Errno 98] Address already in use
我看着如何解決這個問題通過閱讀this和this。添加以下行到我的代碼,試圖讓地址的重用:
server.allow_reuse_address = True
我仍然遇到即使添加上述行同樣的問題。我還在我的server.serve_forever()
函數週圍添加了一個try
和except
,捕獲KeyboardInterrupt異常並調用server.shutdown()
和server.socket.close()
,希望地址能夠被釋放。
這裏是我的TCP服務器代碼的完整程度(注:我排除的MyTCPHandler類):
if __name__ == "__main__":
HOST, PORT = '', 9999
# Create the server, binding to localhost on port 9999
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
server.allow_reuse_address = True
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
try:
server.serve_forever()
except KeyboardInterrupt:
server.shutdown()
server.socket.close()
我仍然得到錯誤運行上面的代碼,並有接近等待一分鐘,直到地址終於被釋放了。這是令人沮喪的時候,我正在調試和不斷改變我的代碼。
我在運行Raspbian「Wheezy」7.0的RaspberryPi上使用Python 2.7.3運行此代碼。
工作。謝謝! – 2013-10-21 21:54:03