Ошибка сломанного канала при попытке отправить данные с сервера клиенту в сокетах PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка сломанного канала при попытке отправить данные с сервера клиенту в сокетах Python

Сообщение Anonymous »

Я пытаюсь использовать «ванильные» сокеты Python для передачи данных с сервера клиенту без использования какого-либо асинхронного программирования. Мой вариант использования следующий: я хотел бы, чтобы локальный Raspberry Pi подключался к моему серверу, открытому в Интернете, а сервер отправлял данные через созданный сокет при возникновении определенного события.
Я выполнил несколько руководств по простому программированию сокетов на Python, чтобы создать следующий код:

server.py

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

import socket
import time

def server():
PORT = 65432
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('0.0.0.0', PORT))
s.listen(1)
conn,address=s.accept()  # accept an incoming connection using accept() method which will block until a new client connects
print("address: ", address[0])
time.sleep(5)
s.send("hey".encode())
conn.close()
return

server()
client.py

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

import socket
import time

HOST = "my.remote.domain"
PORT = 65432

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
while True :
print(s.recv(1024))
time.sleep(1)
При запуске сервера и клиента на соответствующих машинах я вижу, что соединение установлено правильно, поскольку IP-адрес клиента печатается в журналах сервера. Однако через несколько секунд и до отправки каких-либо данных я получаю следующую ошибку на стороне сервера:

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

address:  client_ip_address_appears_here
Traceback (most recent call last):
File "main.py", line 32, in 
receiver()
File "main.py", line 18, in receiver
s.send("heeey".encode())
BrokenPipeError: [Errno 32] Broken pipe
При этом на стороне клиента данные не принимаются:

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

b''
b''
b''
b''
b''
b''
b''
b''
b''
Есть ли концептуальная проблема в том, как я пытаюсь обращаться с сокетом?

Подробнее здесь: https://stackoverflow.com/questions/658 ... thon-socke
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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