pythonはsocketを使用してhttpサーバをシミュレートします
5428 ワード
固定ページを表示
必要なページを表示
#coding=utf-8
import socket
from multiprocessing import Process
def handleClient(clientSocket):
' , '
recvData = clientSocket.recv(2014)
requestHeaderLines = recvData.splitlines()
for line in requestHeaderLines:
print(line)
responseHeaderLines = "HTTP/1.1 200 OK\r
"
responseHeaderLines += "\r
"
responseBody = "hello world"
response = responseHeaderLines + responseBody
clientSocket.send(response)
clientSocket.close()
def main():
' '
serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serverSocket.bind(("", 7788))
serverSocket.listen(10)
while True:
clientSocket,clientAddr = serverSocket.accept()
clientP = Process(target = handleClient, args = (clientSocket,))
clientP.start()
clientSocket.close()
if __name__ == '__main__':
main()
必要なページを表示
#coding=utf-8
import socket
from multiprocessing import Process
import re
def handleClient(clientSocket):
' , '
recvData = clientSocket.recv(2014)
requestHeaderLines = recvData.splitlines()
for line in requestHeaderLines:
print(line)
httpRequestMethodLine = requestHeaderLines[0]
getFileName = re.match("[^/]+(/[^ ]*)", httpRequestMethodLine).group(1)
print("file name is ===>%s"%getFileName) #for test
if getFileName == '/':
getFileName = documentRoot + "/index.html"
else:
getFileName = documentRoot + getFileName
print("file name is ===2>%s"%getFileName) #for test
try:
f = open(getFileName)
except IOError:
responseHeaderLines = "HTTP/1.1 404 not found\r
"
responseHeaderLines += "\r
"
responseBody = "====sorry ,file not found===="
else:
responseHeaderLines = "HTTP/1.1 200 OK\r
"
responseHeaderLines += "\r
"
responseBody = f.read()
f.close()
finally:
response = responseHeaderLines + responseBody
clientSocket.send(response)
clientSocket.close()
def main():
' '
serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serverSocket.bind(("", 7788))
serverSocket.listen(10)
while True:
clientSocket,clientAddr = serverSocket.accept()
clientP = Process(target = handleClient, args = (clientSocket,))
clientP.start()
clientSocket.close()
#
documentRoot = './html'
if __name__ == '__main__':
main()