拆分filenam时Python web服务器索引器错误

2024-04-25 17:28:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经成功地从浏览器访问我的网络服务器,在服务器上下载了一个文件,并用chrome正确地查看了它。但是,当服务器待机约20秒时,它将崩溃并出现索引错误。在

from socket import *
serverport = 972
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(('', serverport))
serverSocket.listen(1)
print 'Standing by...'

while True:
    #Establish the connection
    connectionSocket, addr = serverSocket.accept()

    try:
        message = connectionSocket.recv(1024)
        filename = message.split()[1]
        f = open(filename[1:])
        outputdata = f.read()

        for i in range(0, len(outputdata)):
            connectionSocket.send(outputdata[i])
        print 'Success! File sent!'
        connectionSocket.close()

    except IOError:
        errormessage = 'Error 404 - File not found'
        connectionSocket.send(errormessage)

我得到的输出如下:

^{pr2}$

Tags: 文件网络服务器sendmessage浏览器socketfilename
1条回答
网友
1楼 · 发布于 2024-04-25 17:28:17

这可能是客户端正在关闭连接。连接完成后,将收到一个空字符串''。在

''.split()[1]将失败,并返回{}。我的建议是试试这个补丁:

message = connectionSocket.recv(1024)
if not message:
    # do something like return o continue

另外,在得到空字符串之前,您应该从套接字中recv。在代码中,如果请求大于1024,会发生什么情况?可以这样做:

^{pr2}$

您应该阅读Socket Programming HOWTO,特别是创建多线程服务器的部分,这可能是您想要的方法:)

希望这有帮助!在

相关问题 更多 >