#1、通过soket完成一个页面显示
import socket
body = "Hello world"
string = f"HTTP/1.1 200 ok\r\nContent-Length:{len(body)}\r\n\r\n{body}"
service = socket.socket()
service.bind(("127.0.0.1",23333))
service.listen(10)
client , IP = service.accept()
client.send(string.encode())
#2、通过Soket返回一个图片
import socket
fail = open(r"D:\学习\python\python高阶第02天网络原理\滑稽.jpg","rb").read()
body = fail
string = f"HTTP/1.1 200 ok\r\nContent-Length:{len(body)}\r\nSet-Cookie:login=true\r\n\r\n"
service = socket.socket()
service.bind(("127.0.0.1",23333))
service.listen(10)
client , IP = service.accept()
client.send(string.encode()+body)
#3、通过浏览器地址,访问不同的页面
import socket
import _thread
path = r"D:\学习\python\python高阶第02天网络原理\下午HTTP协议"
service = socket.socket()
service.bind(("127.0.0.1", 23333))
service.listen(10)
def run(client: socket.socket):
s = client.recv(1024 * 1024)
a = str(s.split("\r\n\r\n".encode())[0])
head = a.split("\r\n")
l = head[0].split(" ")
l[1] = l[1].replace("/", r"\\")
body = open(path + l[1], "rb").read()
string = f"HTTP/1.1 200 ok\r\nContent-Length:{len(body)}\r\n\r\n"
client.send(string.encode() + body)
client.close()
while True:
client, ip = service.accept()
_thread.start_new_thread(run, (client,))
#4、写出一个登陆页面,实现一个登陆功能
import socket
import _thread
path = r"D:\学习\python\python高阶第02天网络原理\下午HTTP协议"
service = socket.socket()
service.bind(("127.0.0.1", 23333))
service.listen(10)
def login(d: dict):
name = d["name"]
password = d["password"]
if name == "admin" and password == "admin":
return "true"
else:
return "false"
def run(client: socket.socket):
s = client.recv(1024 * 5)
a = s.split("\r\n\r\n".encode())
d = {
}
if len(a) > 1 and len(a[1]) > 0:
a[1] = a[1].decode()
lists = a[1].split("&")
for i in lists:
b = i.split("=")
d[b[0]] = b[1]
a = str(a[0])
head = a.split("\r\n")
l = head[0].split(" ")
l1 = l[1].split("?")
if len(l1) > 1:
lists = l1[1].split("&")
for i in lists:
a = i.split("=")
d[a[0]] = a[1]
if l1[0] == "/login":
c = login(d)
body = c.encode()
else:
body = open(path + l1[0], "rb").read()
string = f"HTTP/1.1 200 ok\r\nContent-Length:{len(body)}\r\nSet-Cookie:login=true\r\n\r\n"
client.send(string.encode() + body)
client.close()
while True:
client, ip = service.accept()
_thread.start_new_thread(run, (client,))
#5、在登陆功能的基础上,如果用户已经登陆,则返回已经登陆信息(cookie)
import socket
import _thread
path = r"D:\学习\python\python高阶第02天网络原理\下午HTTP协议"
service = socket.socket()
service.bind(("127.0.0.1", 23333))
service.listen(10)
def login(d: dict):
name = d["name"]
password = d["password"]
if name == "admin" and password == "admin":
return "true"
else:
return "false"
def run(client: socket.socket):
s = client.recv(1024 * 5)
a = s.split("\r\n\r\n".encode())
print(a)
d = {
}
if len(a) > 1 and len(a[1]) > 0:
a[1] = a[1].decode()
print(a[1])
lists = a[1].split("&")
print(lists)
for i in lists:
b = i.split("=")
print(b)
d[b[0]] = b[1]
a = str(a[0])
head = a.split("\r\n")
l_I = head[0].split("Cookie:")
print(f"登录信息:{l_I[1]}")
l = head[0].split(" ")
l1 = l[1].split("?")
if len(l1) > 1:
lists = l1[1].split("&")
for i in lists:
a = i.split("=")
d[a[0]] = a[1]
if l1[0] == "/login":
c = login(d)
body = c.encode()
else:
body = open(path + l1[0], "rb").read()
string = f"HTTP/1.1 200 ok\r\nContent-Length:{len(body)}\r\nSet-Cookie:login=true\r\n\r\n"
client.send(string.encode() + body)
client.close()
while True:
client, ip = service.accept()
_thread.start_new_thread(run, (client,))
Python笔记——socket2
猜你喜欢
转载自blog.csdn.net/liaoqingjian/article/details/107073273
今日推荐
周排行