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

时间:2013-09-19 14:36:04

标签: 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): ')
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

2 个答案:

答案 0 :(得分:3)

sys.argv [0]不是你想象的那样。 sys.argv [0]是程序或脚本的名称。该脚本的第一个参数是sys.argv [1]。

答案 1 :(得分:2)

问题是sys.argv中的第一项是脚本名称。所以你的脚本实际上使用你的文件名作为主机名。将第5行更改为:

http_server = sys.argv[1]

More info here.