Код: Выделить всё
s.connect(('127.0.0.1', 4458))и в конечном итоге тайм-аут с TimeoutError: [Errno 110] Тайм-аут соединения
Он должен открыть порт 4458, затем другой скрипт отправит на него несколько символов. Оба сценария должны запускаться на одном и том же Raspberry Pi, в то время как «серверный» будет выполняться с 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()

Подробнее здесь: https://stackoverflow.com/questions/272 ... -localhost
Мобильная версия