socket.gaierror:[错误-2]名称或服务未知

时间:2018-07-10 16:18:51

标签: python sockets

套接字模块中的所有内容都可以使用,但是socket.get主机按名称给出了不希望的错误。

这是客户端代码:

import socket
s = socket.socket()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostbyname("DESKTOP-HC36K46")
port = 1122
s.connect((host,port))
print("CONNECTED TO SERVER")
while True:
    data = s.recv(2)
    print(str(data))
    data = str(data)
    if(data == "b'w'"):
        print("W")
    elif(data == "b's'"):
        print("S")
    elif(data == "b'a'"):
        print("A")
    elif(data == "b'd'"):
        print("D")
    elif(data == "b'wa'"):
        print("WA")
    elif(data == "b'wd'"):
        print("WD")
    elif(data == "b'sa'"):
        print("SA")
    elif(data == "b'sd'"):
        print("SD")

此代码在Windows PC上可以很好地运行,但是当我尝试在Linux(Raspbian或Kali Linux)上运行它时,会出现错误

  

socket.gaierror:[错误-2]名称或服务未知

我该怎么做才能解决此问题?

1 个答案:

答案 0 :(得分:0)

您的问题是socket.gethostbyname("DESKTOP-HC36K46")-这应该返回与该名称关联的ip地址,但是python本身不会这样做,所有python所做的就是向操作系统询问该地址。最终,系统将使用其配置的方法(而不是python)将名称解析为IP地址。

您的Windows系统返回正确的地址,但是您的linux系统可能配置错误,在这种情况下不返回该地址。

在任何情况下,这都不是python的问题,在python方面没有任何解决方法,除非可以删除此行并直接对ip地址进行硬编码:

host = '192.168.0.4' # or whatever is the ip address