计算机网络应用层编程作业

作业1

开发一个简单的web服务器。具体要求:(1)当一个客户(浏览器)联系时创建一个连接套接字;(2)从这个连接接受HTTP请求;(3)揭示该请求以确定所请求的特定文件;(4)从服务器的文件系统获得请求的文件;(5)创建一个由请求的文件组成的HTTP响应报文,报文前面有首部行;(6)经TCP连接向请求的浏览器发送响应。如果浏览器请求一个该服务器不存在的文件,服务器应当返回一个“404 Not Found”差错报文。

整体框架

在这里插入图片描述

python

from socket import *
#创建套接字,AF_INET:ipv4,SOCK_STREAM:TCP连接
serverSocket=socket(AF_INET,SOCK_STREAM)
#浏览器使用默认端口80,绑定欢迎套接字与端口
serverPort=1648
serverSocket.bind(("",serverPort))
#最大监听数,监听消息
serverSocket.listen(5)
while 1:
    print('Ready to serve...')
    #创建连接套接字,addr是另一端套接字地址(ip地址,端口)
    connectionSocket,addr=serverSocket.accept()
    try:
        message=connectionSocket.recv(1024)
        #提取http请求报文中的url地址
        filename=message.split()[1]
        f=open(filename[1:],encoding='utf-8')
        outputdata=f.read()
        f.close()
        outputdata='HTTP/1.1 200 OK\r\n\r\n' +outputdata
        #字符串转换成字节流,发送给客户端
        connectionSocket.send(outputdata.encode())
        connectionSocket.close()
        print("sended")
    except IOError:
        outputdata='HTTP/1.1 404 Not Found\r\n\r\n' 
        connectionSocket.send(outputdata.encode())
        connectionSocket.close()
serverSocket.close()
print("END")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值