from socket import *
import os
serverSocket = socket(AF_INET, SOCK_STREAM)#建立TCP socket
serverPort = 18000#端口号
serverSocket.bind(('', serverPort))#服务器socket绑定固定端口
serverSocket.listen(1);#服务器socket一次连接一个tcp请求
while True:
connectionSocket, address = serverSocket.accept()#握手后建立连接socket
request = connectionSocket.recv(1024)#从客户端发来的请求
print address
try:
filename = request.split()[1]#一个http请求使用空格分段,第二个字段是这个请求的文件地址
f = open(filename[1:])#这个文件地址(例如:/file.html)所以取第二个字符开始
head = """HTTP/1.1 200 OK
Connection: close
Data: Tue, 09 Aug 2017 1:1:1 GMT
Server: Apache/2.2.3 (CentOS)
"""
size = os.path.getsize(filename[1:])#获得文件大小
head += "Content-Length: "+ str(size)+ "\r\n"
head+="Content-Type: text/html\r\n\r\n"
for line in f:
head+=line#将html文件写入响应报文中
for i in range(0,len(head)):
connectionSocket.send(head[i])#通过连接socket传送给客户端
except IOError:#如果请求的文件不存在,返回403错误
content = """HTTP/1.1 404 Not Found
Connection: close
Data: Tue, 09 Aug 2017 1:1:1 GMT
Server: Apache/2.2.3 (CentOS)"""
for i in range(0,len(content)):
connectionSocket.send(content[i])
finally:
connectionSocket.close()
serverSocket.close()
使用python编写web服务器
最新推荐文章于 2024-07-14 15:21:37 发布