У меня возникли проблемы с подключением к моему розетка на localhost.
s.connect(('127.0.0.1', 4458))
(или «локальный») будет просто взять навсегда,
и в конце концов таймаут с TimeoutError: [Errno 110] Connection timed out
Подключиться к гнезду на localhost
Он должен открыть порт 4458, другой сценарий будет посылать несколько символов в нем. Оба сценария должны работать на одном и том же малине 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()
Это приведет к следующим образом: