套接字模块中的所有内容都可以使用,但是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]名称或服务未知
我该怎么做才能解决此问题?
答案 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