我使用python套接字连接到服务器,以便进行日志记录。服务器的IP地址是x.x.x.x (我只是隐藏这个地址,x可以是0到255之间的数字),并且我的域名可以是www.example.domain.com。我用x.x.x.x www.example.domain.com access用/etc/hosts编写了这个sudo。但是,当我试图在我的程序中使用域名时,python套接字只是无法解析域名。
import socket
mysocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
'''Block of code'''
mysocket.sendto('Hello!', 'www.example.domain.com')
mysocket.close()这里的错误消息是:
socket.gaierror: Errno 8 nodename或servname提供或不知道
如果我将www.example.domain.com更改为纯文本主机名(如testLogger ),python就能够解决这个问题。我可以在我的机器上ping域名,所以我只是想知道为什么python不能在这个场景中解析域名。
发布于 2017-09-06 21:32:19
您的代码有几个错误:
您正在IP套接字上使用UDP套接字基元sendto()。此外,address参数的格式不正确,它通常是元组(主机名、端口)。
因此,要么创建一个正确的UDP套接字:
mysocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
mysocket.sendto(b'data', ('hostname', 9999))或者使用connect + send/sendall代替:
mysocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysocket.connect(('hostname', 9999))
mysocket.sendall(b'data')https://stackoverflow.com/questions/46084496
复制相似问题