1
我無法連接到我自己的套接字上本地主機。
s.connect(('127.0.0.1', 4458))
(或「本地主機」)將只考慮半天,
並最終超時與TimeoutError: [Errno 110] Connection timed out
連接到本地主機上的套接字
應該打開端口4458,那麼另一個腳本會發送一些字符給它。這兩個腳本都應該在同一個Raspberry Pi上運行,而'服務器'將使用sudo(用於訪問GPIO)執行,另一個腳本不會作爲聊天機器人。
我在Pi上運行服務器(使用python 3.4.1)和筆記本電腦上的客戶端(mac,python 3.4.2)沒有任何問題。
另外,它在反向上工作,筆記本電腦上的服務器腳本和樹莓上的客戶端。
作爲最終測試,它可以與上述macbook上的服務器和客戶端一起工作。
Pi上的服務器+客戶端無法正常工作。
程序凍結
我的縮短碼,如果有幫助:
# $ sudo python3 server.py
__author__ = 'luckydonald'
import socket # server
import time # wait for retry
import threading
class Server(threading.Thread):
port = 4458;
QUIT = False
def run(self):
s = socket.socket()
failed = True
print ("Starting Server on Port %d" % (self.port))
while failed:
try:
s.bind(("", self.port))
except Exception as err:
print(err)
print("Port assignment Failed. Retring in 1 second.")
time.sleep(1)
else:
failed = False
print("Success.")
while not self.QUIT:
print("Listening!")
conn, addr = s.accept() # freezes here
print("Got something: %s , %s" %(str(conn), str(addr)))
while not self.QUIT:
result = conn.recv(1)
print("Got result: " + str(result))
server = Server();
server.daemon = True
server.run();
# server.start();
以及客戶端:
# python3 cilent.py
s = socket.socket()
print("connecting...")
s.connect(("localhost",4458)) # also tried "172.0.0.1" # freezes here
print("connected!")
s.sendall("+".encode("utf-8"))
s.sendall("-".encode("utf-8"))
s.close()
它會導致這樣的: