Python socket.gaierror:[Errno-2]名称或服务未知

Python socket.gaierror:[Errno-2]名称或服务未知,python,linux,sockets,networking,Python,Linux,Sockets,Networking,伙计们,我是个套接字编程新手 下面的程序是一个从服务器请求文件的客户端程序,但我得到的错误如下所示。。 我的输入是GET index.html,代码是 谁能解决这个错误 #!/usr/bin/env python import httplib import sys http_server = sys.argv[0] conn = httplib.HTTPConnection(http_server) while 1: cmd = raw_input('input command (ex

伙计们,我是个套接字编程新手 下面的程序是一个从服务器请求文件的客户端程序,但我得到的错误如下所示。。 我的输入是GET index.html,代码是 谁能解决这个错误

#!/usr/bin/env python

import httplib
import sys


http_server = sys.argv[0]

conn = httplib.HTTPConnection(http_server)

while 1:
cmd = raw_input('input command (ex. GET index.html): ')
cmd = cmd.split()

if cmd[0] == 'exit': 
    break


conn.request(cmd[0],cmd[1])


rsp = conn.getresponse()


print(rsp.status, rsp.reason)
data_received = rsp.read()
print(data_received)

conn.close()





input command (ex. GET index.html): GET index.html
Traceback (most recent call last):
File "./client1.py", line 19, in <module>
conn.request(cmd[0],cmd[1])
File "/usr/lib/python2.6/httplib.py", line 910, in request
self._send_request(method, url, body, headers)
File "/usr/lib/python2.6/httplib.py", line 947, in _send_request
self.endheaders()
File "/usr/lib/python2.6/httplib.py", line 904, in endheaders
self._send_output()
File "/usr/lib/python2.6/httplib.py", line 776, in _send_output
self.send(msg)
File "/usr/lib/python2.6/httplib.py", line 735, in send
  self.connect()
 File "/usr/lib/python2.6/httplib.py", line 716, in connect
  self.timeout)
File "/usr/lib/python2.6/socket.py", line 500, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno -2] Name or service not known
#/usr/bin/env python
导入httplib
导入系统
http_server=sys.argv[0]
conn=httplib.HTTPConnection(http_服务器)
而1:
cmd=raw_input('input命令(例如GET index.html):')
cmd=cmd.split()
如果cmd[0]=“退出”:
打破
控制请求(命令[0],命令[1])
rsp=conn.getresponse()
打印(rsp状态、rsp原因)
接收到的数据=rsp.read()
打印(收到数据)
康涅狄格州关闭
输入命令(例如GET index.html):GET index.html
回溯(最近一次呼叫最后一次):
文件“/client1.py”,第19行,在
控制请求(命令[0],命令[1])
请求中的文件“/usr/lib/python2.6/httplib.py”,第910行
self.\u发送请求(方法、url、正文、标题)
文件“/usr/lib/python2.6/httplib.py”,第947行,在发送请求中
self.endheaders()
文件“/usr/lib/python2.6/httplib.py”,第904行,在endheaders中
self.\u发送\u输出()
文件“/usr/lib/python2.6/httplib.py”,第776行,在发送输出中
self.send(msg)
文件“/usr/lib/python2.6/httplib.py”,第735行,在send中
self.connect()
文件“/usr/lib/python2.6/httplib.py”,第716行,在connect中
自我保护(超时)
文件“/usr/lib/python2.6/socket.py”,第500行,在create_connection中
对于getaddrinfo(主机、端口、0、SOCK_流)中的res:
socket.gaierror:[Errno-2]名称或服务未知

问题在于
sys.argv
中的第一项是脚本名。因此,您的脚本实际上使用您的文件名作为主机名。将第5行更改为:

http_server = sys.argv[1]

sys.argv[0]不是您所认为的那样。sys.argv[0]是程序或脚本的名称。脚本的第一个参数是sys.argv[1]。

尝试使用
打印sys.argv[0]
进行调试时发生了什么?你看到可以打开的真实主机名了吗?缩进对python来说有点重要。。。(还有那些试图解释它的人…)我得到了o/p,谢谢大家重播我的qsn。。。