网络编程:套接字基于TCP的应用(二--http传输server)

【1】接收http请求 

【2】查看http请求 

【3】返回一个网页给客户端

【server端】
from
socket import * # 接收请求 # 查看请求 # 返回客户端段请求内容 def handleClient(connfd): request = connfd.recv(4096) # print("***********") # print(request) # print("************") #按照行切割请求 request_lines = request.splitlines() for line in request_lines: print(line.decode()) try: f = open('index.html') except IOError: response = "HTTP/1.1 303 Not Found\r\n" response += "\r\n" #空行 response += ''' ************************** Sorry, not found the page. ************************** ''' else: response = "HTTP/1.1 200 OK\r\n" response += '\r\n' response += f.read() finally: #发送给浏览器 connfd.send(response.encode()) #创建套接字,调用handleClient完成功能 def main(): #创建tcp套接字 sock = socket() sock.setsockopt\ (SOL_SOCKET,SO_REUSEADDR,1) sock.bind(('0.0.0.0',8000)) sock.listen() while True: print("Listen the port 8000...") connfd,addr = sock.accept() #处理浏览器发来的请求 handleClient(connfd) connfd.close() if __name__ == "__main__": main()

 

【client端】
from
socket import * #创建套接字 sock = socket() #发起连接 sock.connect(('127.0.0.1',8888)) while True: #消息收发 msg = input("Msg>>") if not msg: break sock.sendall(msg.encode()) data = sock.recv(1024) print(data.decode()) sock.close()

 #===========================#

【httpserver2.py】
from
socket import * #httpserver基本功能 #接收http请求,查看,返回一个页面 def handleClient(connfd): request = connfd.recv(4096) print("***************") print(request) print("***************") f = open('index.html','r') response = "HTTP/1.1 200 OK\r\n" response += "Content-Type: text/html\r\n" response += "\r\n" response += f.read() connfd.send(response.encode()) sockfd = socket() sockfd.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) sockfd.bind(('0.0.0.0',8000)) sockfd.listen(5) while True: print("Listen the port 8000...") connfd,addr = sockfd.accept() handleClient(connfd) connfd.close()

 

posted @ 2021-01-04 18:48  昱成  阅读(62)  评论(0编辑  收藏  举报