2014-12-04 69 views
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() 

它會導致這樣的:

Picture of console output

回答

1

我沒想到的是localhost/127.0.0.1沒有工作。 Ping results

我在我的hosts文件中有一個格式錯誤的條目。