luc*_*ald 5 python sockets localhost raspberry-pi raspbian
我在连接到localhost上自己的套接字时遇到问题。(或“localhost”)将永远花费,并
最终超时
s.connect(('127.0.0.1', 4458))TimeoutError: [Errno 110] Connection timed out
它应该打开端口 4458,然后另一个脚本将向其发送一些字符。两个脚本都应该在同一个 Raspberry Pi 上运行,而“服务器”脚本将使用 sudo 执行(以访问 GPIO),而另一个则不使用 sudo,成为聊天机器人。
我在 Pi (使用python 3.4.1 )上运行服务器和在我的笔记本电脑(mac,python 3.4.2)上运行客户端没有任何问题。
它还可以反向工作,即笔记本电脑上的服务器脚本和 Raspberry 上的客户端。
作为最终测试,它适用于上述 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();
Run Code Online (Sandbox Code Playgroud)
对于客户来说:
# 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()
Run Code Online (Sandbox Code Playgroud)
它将导致这样的结果:

| 归档时间: |
|
| 查看次数: |
23408 次 |
| 最近记录: |