首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么python套接字不能在这里解析域名?

问为什么python套接字不能在这里解析域名?
EN

Stack Overflow用户
提问于 2017-09-06 21:19:18
回答 1查看 3.7K关注 0票数 1

我使用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套接字只是无法解析域名。

代码语言:javascript
复制
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不能在这个场景中解析域名。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-06 21:32:19

您的代码有几个错误:

您正在IP套接字上使用UDP套接字基元sendto()。此外,address参数的格式不正确,它通常是元组(主机名、端口)。

因此,要么创建一个正确的UDP套接字:

代码语言:javascript
复制
mysocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
mysocket.sendto(b'data', ('hostname', 9999))

或者使用connect + send/sendall代替:

代码语言:javascript
复制
mysocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysocket.connect(('hostname', 9999))
mysocket.sendall(b'data')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46084496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档