作业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")