python - “socket”的实例没有“gethostbyname”成员 Python3
问题描述
我用python编写了一个聊天程序。但是当我写“host = socket.gethostname()”时它给了我错误。我的文件名为“server.py”(不带引号)我该如何解决?代码:
import socket
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostbyname()
port = 12347
socket.bind((host, port))
socket.listen(10)
c, addr = socket.accept()
c.sendall(bytes("Hi!".encode("utf-8")))
print("Connected to {}".format(addr))
while True:
data = str(c.recv(1024))[1:]
if data:
print("Client: {}".format(data))
respond = input("Server: ").encode("utf-8")
if respond == "q":
exit()
else:
c.sendall(bytes(respond.encode("utf-8")))
解决方案
这应该是一个危险信号:
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
导入时socket
,socket
是socket模块。上面的行将名称分配给socket
套接字对象。
然后
host = socket.gethostbyname()
不起作用,因为该方法适用于模块,但模块名称已重新分配给套接字对象。
这将起作用(重命名您的套接字对象):
import socket
my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostbyname("localhost") # needs an argument, btw
推荐阅读
- php - 如何使用 php curl 从外部网站的多个页面获取数据?
- visual-studio - 更新 tfs 版本后无法从 Visual Studio 连接 tfs
- python - 在 scikit-learn 管道中使用 gensim word2vec
- c# - Unity+Firebase-Database [错误] WebSocket:ws_0 - 无法连接
- swift - 在 UIViewController 类中使用“视图”时,Swift Playground 崩溃
- python - 无法通过子进程执行 msg(和其他)Windows 命令
- hibernate - 像 Typescript Partial 这样的 Kotlin 功能?
- mongodb - 重写嵌套数组中的属性
- json - IOS/Swift/JSON:使用 swiftyJSON 解析嵌套的 JSON
- bash - 脚本从命令行运行,但不是从 finder