我无法在 localhost 上连接到我自己的套接字。
s.connect(('127.0.0.1', 4458))
(或“localhost”)将永远占据,
最终超时与TimeoutError: [Errno 110] Connection timed out
它应该打开端口4458,然后另一个脚本会向它发送一些字符。这两个脚本应该在相同的Raspberry Pi上运行,而'server'将使用sudo(访问GPIO)执行,而不使用,作为聊天机器人。
我在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();
对于客户:
# 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()
这将导致:
答案 0 :(得分:2)
我没想到的是localhost / 127.0.0.1没有用。
100% package loss
我的hosts
文件中有一个格式错误的条目。
答案 1 :(得分:0)
您应该检查以下项目
python.exe
的端口授予了所需的权限