1
我遇到了一個python腳本問題我沒有寫自己,我完全是python的新手。腳本在Raspberry Pi上運行,並在端口8080(套接字)上偵聽。客戶端可以發送諸如「reboot()」之類的命令。問題是當客戶端關閉連接時,腳本不再接受新的連接並執行該命令。Python Socket不斷監聽並接受新客戶端
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(("", 8080))
s.listen(1)
conn = s.accept()
while True:
data = conn[0].recv(1024)
if data:
command = ""
args = ""
if "(" in data and ")" in data:
command = data[:data.index("(")]
args = data[data.index("(") + 1:data.index(")")]
if "," in args:
arglist = args.split(",")
else:
arglist = args
if command == "reboot":
os.system("reboot")
elif command == "shutdown":
os.system("shutdown -h now")
elif command == "reset":
obja.reset()
objb.reset()
else:
conn[0].sendall("Command doesn't exist!")
腳本在啓動時運行並且不終止。這裏的最後一行也是原始腳本的最後一行。我發佈的代碼上面還有一些代碼,但我認爲它不適用於套接字問題。我嘗試將While循環中的前5行放入,但不起作用。 我應該如何重新編寫代碼,以便在客戶端關閉連接時繼續運行?任何幫助是非常受歡迎的。
彼得
可能是因爲你不是'close('s.close()')連接以及.. –
不完全一樣,但邏輯相似http://stackoverflow.com/questions/31357762/蟒-子 - 變化 - DIR-通客戶端 - 服務器/ 31359402#31359402 –