Подключиться к Socket на локальном хостеPython

Программы на Python
Ответить
Anonymous
 Подключиться к Socket на локальном хосте

Сообщение Anonymous »

У меня возникли проблемы с подключением к моему собственному сокету на localhost.

Код: Выделить всё

s.connect(('127.0.0.1', 4458))
(или «localhost») просто займет вечность,

и в конечном итоге тайм-аут с 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»