首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HTTPserver的Python错误

使用HTTPserver的Python错误
EN

Stack Overflow用户
提问于 2014-07-05 07:18:05
回答 2查看 1.5K关注 0票数 0

你好,我有以下代码:

代码语言:javascript
复制
import os, sys
from http.server import HTTPServer, CGIHTTPRequestHandler

webdir = '.'
port = 80
if len(sys.argv) > 1: webdir = sys.argv[1]
if len(sys.argv) > 2: port = int(sys.argv[2])
print("webdir '%s', port %s" % (webdir, port))

os.chdir(webdir)
svraddr = (" ", port)
srvrobj = HTTPServer(svraddr, CGIHTTPRequestHandler)
srvrobj.serve_forever()

但是,如果我以管理员权限运行此代码,它将返回一个错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Users\Nitro\Desktop\web server\webserver.py", line 12, in <module>
    srvrobj = HTTPServer(svraddr, CGIHTTPRequestHandler)
  File "C:\Python33\lib\socketserver.py", line 430, in __init__
    self.server_bind()
  File "C:\Python33\lib\http\server.py", line 135, in server_bind
    socketserver.TCPServer.server_bind(self)
  File "C:\Python33\lib\socketserver.py", line 441, in server_bind
    self.socket.bind(self.server_address)
socket.gaierror: [Errno 11004] getaddrinfo failed

怎么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-05 07:29:14

对我来说,改变这句话:

代码语言:javascript
复制
svraddr = (" ", port)

至:

代码语言:javascript
复制
svraddr = ("", port)

会解决你的问题。这里的字符串(" ")代表了套接字应该“绑定”到的接口:它应该是与机器上的接口匹配的IP地址,但如果不是,它似乎会尝试查找它(解析它)。" "不能解决问题。''的意思是“所有接口”:

对于IPv4地址,接受两种特殊形式而不是主机地址:空字符串表示INADDR_ANY

INADDR_ANY0.0.0.0,所以更明确的说法是:

代码语言:javascript
复制
svraddr = ('0.0.0.0', port)

"0.0.0.0“指”所有接口“。您的them服务器监听套接字绑定到的接口(大致是网卡),在本例中,所有这些接口。通常,只绑定到特定接口(如果有多个接口)是有用的;还有回送接口,这使得只有机器才能连接到can服务器:

代码语言:javascript
复制
svraddr = ('127.0.0.1', port)

(或者,另一种方法是使用名称查找功能,使我们更早地被绊倒)

代码语言:javascript
复制
svraddr = ('localhost', port)
票数 1
EN

Stack Overflow用户

发布于 2014-07-05 07:28:05

试着改变:

代码语言:javascript
复制
svraddr = (" ", port)

至:

代码语言:javascript
复制
svraddr = ("", port)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24584025

复制
相关文章

相似问题

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