【问题标题】:error: [Errno 10054] An existing connection was forcibly closed by the remote host错误:[Errno 10054] 现有连接被远程主机强行关闭
【发布时间】:2012-12-03 10:16:00
【问题描述】:

我是套接字编程的新手,谁能告诉我我在这里做错了什么。我收到此错误。当我不调用将其定义为函数时,该程序工作正常。我从调用它的那一刻起主要是它给了我这个错误。有人请帮忙!

#!/usr/bin/env python
import socket
import sys
import urlparse
from urlparse import urlparse

def main(url):
  t=url
  o = urlparse(t)
  x=".".join(o.netloc.split(".")[-2:])
  head1= o.path
  host = o.netloc
  port = 80

  try:
     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  except socket.error, msg:
     sys.stderr.write("[ERROR] %s\n" % msg[1])
     sys.exit()
  try:
     sock.connect((host, port))
     except socket.error, msg:
     sys.stderr.write("[ERROR] %s\n" % msg[1])
     sys.exit()
  try:
     sock.send("HEAD %s HTTP/1.0\r\n\r\n" % head1)
  except sock.error:
     sys.exit()   

  s=sock.recv(600)
  sock.shutdown()
  import sys
  sys.exit
  sock.close()
  return s

 x=main("www.google.ca")
 print x

ERROR I get:
Traceback (most recent call last):
File "C:/myserver/cgi-bin/domainsockettest.py", line 47, in <module>
x=main("www.google.ca")
File "C:/myserver/cgi-bin/domainsockettest.py", line 40, in main
s=sock.recv(600)
error: [Errno 10054] An existing connection was forcibly closed by the remote host

【问题讨论】:

  • “当我不调用将其定义为函数时”到底是什么意思?

标签: python sockets


【解决方案1】:

我建议您打印出中间值,直到您确定自己在做什么。现在看来您的 URL 拆分逻辑搞砸了:

>>> o = urlparse.urlparse('www.google.ca')
>>> o.path
'www.google.ca'
>>> o.netloc
''
>>>

还有:

  • 调用sys.exit() 缺少括号,
  • 您在退出后尝试做某事,
  • 返回关闭的套接字是完全没用的。

【讨论】:

  • 嗨 Nikolai,感谢您的帮助。我删除了 o.netloc,而是使用 t=url o = urlparse(t) x=".".join(t.split(".") [-2:])#x 将是我的域名。
  • 用于返回收到的字符串,例如“http 1.1 200 ok”,请您提出任何建议。提前致谢。
  • 我不明白你的问题。解释更多你正在尝试做的事情,也许人们可以提供更多帮助。
  • 嗨 Nikolai,感谢您的回复。我正在尝试验证 url 格式。假设用户想要在书签页面中添加 url,我的脚本将验证 url 是否具有正确的格式,例如url "google.ca" ,如果用户输入错误的 "http/ww.google" 或 "www.google" ,我可以通过任何方式验证这一点。非常感谢您的帮助。
  • 看看这个 SO 问题的答案stackoverflow.com/questions/7160737/…
猜你喜欢
  • 2016-08-18
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多