s.bind имя узла или имя сервера указано или не известно - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь изучить Socket для Python 3.6. Мой первый проект - программа обмена сообщениями. пока все, что я получил, было это,

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print (s)

host = socket.gethostname()
print (host)

port = 8140
print (port)

s.bind((host, port))

Как только я запускаю его, я получаю это,

<socket.socket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('0.0.0.0', 0)>
R1shinerg
8140
Traceback (most recent call last):
  File "/Users/g.shiner21/Desktop/Python/P2PFile/P2PFile2.py", line 12, in <module>
    s.bind((host, port))
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
>>> 

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

try Ниже:

import socket
socket.gethostbyname("")

ИЛИ

import socket
socket.gethostbyname("localhost")

socket.gaierror - Подкласс OSError, это исключение вызывается для ошибок, связанных с адресами, getaddrinfo () и getnameinfo ().Сопутствующее значение - пара (ошибка, строка), представляющая ошибку, возвращаемую библиотечным вызовом.строка

Это может быть связано с тем, что имя хоста не может быть преобразовано в IP-адрес.Проверьте настройки DNS (сервера доменных имен) и укажите его (правильный) сервер.

0 голосов
/ 16 мая 2018

Ваш код работает нормально на моей машине.Я считаю, что дело здесь в записи DNS в вашем файле hosts.Для системы Windows она находится в C: \ Windows \ System32 \ drivers \ etc \ hosts, а для системы Linux - в / etc / hosts.

Добавьте туда запись, как показано ниже

127.0.0.1 R1shinerg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...