Python «socket.gaierror: [Errno 11001] getaddrinfo не удалось», вызванный сокетом.connect()Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python «socket.gaierror: [Errno 11001] getaddrinfo не удалось», вызванный сокетом.connect()

Сообщение Anonymous »

Я пытаюсь отправлять и получать двоичные данные по протоколу UDP через соединение Ethernet с использованием сокетов Python.
Мне удалось сделать это с помощью автономного сценария и протестировать его, подключившись два ноутбука, использующие кабель Ethernet и использующие программное обеспечение Hercules на другом ноутбуке для отправки/получения данных.
Однако, пытаясь сделать это в приложении с графическим интерфейсом на базе PyQt6, я получаю следующее ошибка:

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

line 33, in __init__
self.sock.connect((self.sendToAddress, self.sendToPort))
socket.gaierror: [Errno 11001] getaddrinfo failed
Мои основные функции:

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

def __init__(self, addr, port):

self.sock = socket.socket(family=socket.AF_INET,type=socket.SOCK_DGRAM) # UDP

self.data = None
self.sendToAddress = str(addr)
self.sendToPort = int(port)
self.reply_data = None
self.replyBufSize = 1024

self.sock.bind(('169.234.29.200', 8000))

self.sock.connect((self.sendToAddress, self.sendToPort)) # error caused by this line

def sendData(self):

if(isinstance(self.data, bytes) == False):
self.data = self.data.encode()

bytes_Sent = self.sock.sendto(self.data, (self.sendToAddress, self.sendToPort))
print("sent data = ", self.data)
print("bytesSent = ", bytes_Sent)

def getData(self):

while self.reply_data is None:
print("waiting for msg")
self.reply_data = self.sock.recvfrom(self.replyBufSize)

print("still waiting")

print(self.reply_data)`
Код для отправки и получения идентичен в автономном скрипте и в приложении PyQt6, но он работает в автономном режиме и не работает здесь.
Я тщательно искал это в Интернете, и почти все решения включают в себя отсутствующий оператор socket.connect(). Однако в моем случае, похоже, причиной этого является метод socket.connect().
Я также пробовал очистить DNS и перезагрузить компьютер. >
ОБНОВЛЕНИЕ:
Я принимал sendToAddress и sendToPort в качестве входных данных от пользователя, сохраняя их в файл, который действует как общая память, и считывает их, когда необходимо создать сокет.

Однако, если я жестко запрограммирую значения, все будет работать без проблем.
Может ли быть какая-то конкретная причина, по которой прием значений в качестве входных данных приводит к ошибке?
p>
Я использовал print(socketObj.getsockname()), чтобы убедиться, что объект сокета создан правильно. Ошибка по-прежнему возникает при вызове метода Connect().

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Python Paramiko Socket.gaierror: [Errno 11001] getAddrinfo не удалось
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Python Socket.gaierror: [Errno 11001] Ошибка getaddrinfo
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Python Socket.gaierror: [Errno 11001] Ошибка getaddrinfo
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Перечисление поддоменов — Socket.gaierror: [Errno 11001] Ошибка getaddrinfo
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Не удалось установить новое соединение: [Errno 11001] getaddrinfo не удалось» в Python 3.9.
    Anonymous » » в форуме Python
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous

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