文章目录
1.实现简单的http服务器2.设定套接字选项3.分会inde.html页面4.根据用户需求返回相应的页面
1.实现简单的http服务器
import socket
def service_client(new_socket
):
"""为这个客户端返回数据"""
request
= new_socket
.recv
(1024)
print(request
)
response
= "HTTP/1.1 200 OK\r\n"
response
+= "\r\n"
response
+= "hahahhah"
new_socket
.send
(response
.encode
("utf-8"))
new_socket
.close
()
def main():
"""用来完成整体的控制"""
tcp_server_socket
= socket
.socket
(socket
.AF_INET
, socket
.SOCK_STREAM
)
tcp_server_socket
.bind
(("", 7890))
tcp_server_socket
.listen
(128)
while True:
new_socket
, client_addr
= tcp_server_socket
.accept
()
service_client
(new_socket
)
tcp_server_socket
.close
()
if __name__
== "__main__":
main
()
2.设定套接字选项
import socket
def service_client(new_socket
):
"""为这个客户端返回数据"""
request
= new_socket
.recv
(1024)
print(request
)
response
= "HTTP/1.1 200 OK\r\n"
response
+= "\r\n"
response
+= "hahahhah"
new_socket
.send
(response
.encode
("utf-8"))
new_socket
.close
()
def main():
"""用来完成整体的控制"""
tcp_server_socket
= socket
.socket
(socket
.AF_INET
, socket
.SOCK_STREAM
)
tcp_server_socket
.setsockopt
(socket
.SOL_SOCKET
, socket
.SO_REUSEADDR
, 1)
tcp_server_socket
.bind
(("", 7890))
tcp_server_socket
.listen
(128)
while True:
new_socket
, client_addr
= tcp_server_socket
.accept
()
service_client
(new_socket
)
tcp_server_socket
.close
()
if __name__
== "__main__":
main
()
3.分会inde.html页面
import socket
def service_client(new_socket
):
"""为这个客户端返回数据"""
request
= new_socket
.recv
(1024)
print(">>>"*50)
print(request
)
response
= "HTTP/1.1 200 OK\r\n"
response
+= "\r\n"
f
= open("./html/index.html", "rb")
html_content
= f
.read
()
f
.close
()
new_socket
.send
(response
.encode
("utf-8"))
new_socket
.send
(html_content
)
new_socket
.close
()
def main():
"""用来完成整体的控制"""
tcp_server_socket
= socket
.socket
(socket
.AF_INET
, socket
.SOCK_STREAM
)
tcp_server_socket
.setsockopt
(socket
.SOL_SOCKET
, socket
.SO_REUSEADDR
, 1)
tcp_server_socket
.bind
(("", 7890))
tcp_server_socket
.listen
(128)
while True:
new_socket
, client_addr
= tcp_server_socket
.accept
()
service_client
(new_socket
)
tcp_server_socket
.close
()
if __name__
== "__main__":
main
()
4.根据用户需求返回相应的页面
import socket
import re
def service_client(new_socket
):
"""为这个客户端返回数据"""
request
= new_socket
.recv
(1024).decode
("utf-8")
request_lines
= request
.splitlines
()
print("")
print(">"*20)
print(request_lines
)
file_name
= ""
ret
= re
.match
(r
"[^/]+(/[^ ]*)", request_lines
[0])
if ret
:
file_name
= ret
.group
(1)
if file_name
== "/":
file_name
= "/index.html"
try:
f
= open("./html" + file_name
, "rb")
except:
response
= "HTTP/1.1 404 NOT FOUND\r\n"
response
+= "\r\n"
response
+= "------file not found-----"
new_socket
.send
(response
.encode
("utf-8"))
else:
html_content
= f
.read
()
f
.close
()
response
= "HTTP/1.1 200 OK\r\n"
response
+= "\r\n"
new_socket
.send
(response
.encode
("utf-8"))
new_socket
.send
(html_content
)
new_socket
.close
()
def main():
"""用来完成整体的控制"""
tcp_server_socket
= socket
.socket
(socket
.AF_INET
, socket
.SOCK_STREAM
)
tcp_server_socket
.setsockopt
(socket
.SOL_SOCKET
, socket
.SO_REUSEADDR
, 1)
tcp_server_socket
.bind
(("", 7890))
tcp_server_socket
.listen
(128)
while True:
new_socket
, client_addr
= tcp_server_socket
.accept
()
service_client
(new_socket
)
tcp_server_socket
.close
()
if __name__
== "__main__":
main
()
转载请注明原文地址: https://yun.8miu.com/read-111337.html