gpt4 book ai didi

python - 为什么这里的python socket无法解析域名?

转载 作者:行者123 更新时间:2023-12-01 02:37:20 24 4
gpt4 key购买 nike

我正在使用 python 套接字连接到服务器以进行日志记录。服务器的IP地址是x.x.x.x(我只是隐藏了这个,x可以是从0到255的数字),并且我的域名可以是www。例如.domain.com。我已经在 /etc/hosts 中使用 sudo 访问权限编写了这个 x.x.x.x www.example.domain.com 。但是,当我尝试在程序中使用域名时,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 nor servname provided, or not known

如果我将 www.example.domain.com 更改为纯文本主机名,例如 testLogger,python 套接字能够解决该问题。我可以在我的机器上ping域名,所以我只是想知道为什么Python套接字在这种情况下无法解析域名。

最佳答案

您的代码有几个错误:

您正在 IP 套接字上使用 UDP 套接字原语 sendto()。另外,地址参数的格式不正确,它通常是一个元组(主机名,端口)。

因此,要么创建一个正确的 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')

关于python - 为什么这里的python socket无法解析域名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46084496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com