Как получить URL-адрес от клиента и использовать его с gethostbyname () - PullRequest
0 голосов
/ 12 января 2019

Я хочу отправить сообщение от клиента на сервер через сокеты в Python, в частности, я бы отправил пример URL "www.google.com". Тогда я бы просто отобразил IP-адрес. Я использую Telnet в качестве моего клиента. Поэтому я набираю информацию

Я пробовал несколько способов превратить сообщение в строку, но до сих пор не нашел решения. «В настоящее время я получаю эту ошибку:

 socket.gaierror: [Errno -2] Name or service not known
 Process Process-1:
Traceback (most recent call last):
  File "/usr/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "proxy_server.py", line 44, in handle_connection
    host_ip = socket.gethostbyname(str(message.decode('utf-8')))
socket.gaierror: [Errno -2] Name or service not known

Не уверен, как это исправить. Должен ли я просто использовать split(), чтобы избавиться от нежелательных вещей, когда я впервые получаю сообщение и не использую декодирование?

# Recieve message from the client
message = conn.recv(2024)
print(message)
print(message.decode('utf-8'))
# host_ip = socket.gethostbyname(message.decode('utf-8'))
host_ip = socket.gethostbyname(str(message.decode('utf-8')))
print(host_ip)

1 Ответ

0 голосов
/ 12 января 2019

Попробуйте задать код хоста, чтобы убедиться, что разрешение имен работает на стороне сервера:

socket.gethostbyname('www.google.com')

Кроме того, проверьте длину ввода, чтобы избавиться от возможных '\ n'

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