【问题标题】:Python Socket Server sends file request 3 times instead of once?Python Socket Server 发送文件请求 3 次而不是一次?
【发布时间】:2014-10-12 21:07:14
【问题描述】:

使用套接字制作一个简单的 Python Web 服务器以开始了解它们是如何工作的,但我想我在这方面迷路了。
我的 python 服务器应该访问同一目录中的基本 html 文件并显示它,每次请求时显示一次。但是这段代码出于某种原因发送了 3 到 5 次请求...

from socket import *
server = socket(AF_INET, SOCK_STREAM)
port = 12030
server.bind((gethostname(), port))
server.listen(1)
while True:
    print 'Ready to serve'
    conection,  addr = server.accept()
    try:
        print 'Working'
        message = conection.recv(1024)
        filename = message.split()[1] #cuts off the '/' in the request page
        f = open(filename[1:])
        print message
        outputdata = f.read()
        print outputdata
        conection.send('HTTP/1.1 200 OK\r\n')
        for i in range(0, len(outputdata)):
            conection.send(outputdata[i])
        conection.close()
    except IOError:
        print 'IO ERROR'
        print message
        print outputdata
        conection.close()
    except KeyboardInterrupt:
        server.close()
        conection.close()
        break;

这是我在浏览器中打开页面时的输出。

-en 14:59:54  @ ・ー ・ 
python project.py 
Ready to serve
Working
<html><body><h1>Wurld</body></html>

Ready to serve
Working
IO ERROR
<html><body><h1>Wurld</body></html>

Ready to serve
Working
IO ERROR
<html><body><h1>Wurld</body></html>

Ready to serve

我尝试添加server.listen(1)conection.send("Content-Type:text/html\r\n") ,但这些都不做任何事情。 除了阻止每分钟可以请求多少次之外,我不确定问题可能是什么?

每次更新以打印消息

-en 15:33:26  @ ・ー ・ 
python project.py 
Ready to serve
Working
GET /HelloWorld.html HTTP/1.1
Host: seppala:12030
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36
DNT: 1
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8


<html><body><h1>Wurld</body></html>

Ready to serve
Working
IO ERROR
GET /favicon.ico HTTP/1.1
Host: seppala:12030
Connection: keep-alive
Accept: */*
DNT: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8


<html><body><h1>Wurld</body></html>

Ready to serve
Working
IO ERROR
GET /favicon.ico HTTP/1.1
Host: seppala:12030
Connection: keep-alive
Accept: */*
DNT: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8


<html><body><h1>Wurld</body></html>

Ready to serve

【问题讨论】:

  • 每次message的值是多少?
  • 我添加了打印消息,用结果更新了我的问题
  • 我不明白/favicon.ico 来自哪里...

标签: python html sockets python-2.7


【解决方案1】:

您的浏览器似乎正在请求 favicon.ico 。尝试将 favicon.ico 添加到您的文档根目录,或者尝试使用其他浏览器。这个问题不是因为你的脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 2015-06-22
    相关资源
    最近更新 更多