<>强实验目的:强>用socket 模拟一个微型的web服务器,当py脚本运行起后,实微型web服务器架起了,然后用本地浏览器访问127.0.0.1:8080 (web服务器的ip_port)时web服务器就会将网页内容传给浏览器,实现网页浏览只
西南+ sys: python3.7.2 + windows10 64位
本地准备的服务器端网页为下载的网址之家主页(我已上载并上,传点击这里)
通过这个实验让我学到了:
1只,当得到请求一个主页时,要完整的显示一个页面(包括文,本图片,css绚染等)是要得到多次请求的。
2。响应回复本地页网,打开(filepath风险权重)时要特别的注意
进口套接字 进口操作系统 curfilepath=os.path.split (os.path.realpath (__file__)) [0]。替换(“\ \”,“/? 打印(f 'curfilepath: {curfilepath}”) def new_socket_server (new_socket new_addr): 如果new_addr [0] !=": print (f '当前客户端{new_addr}已连接上服务器端。”) # 3。接收信息 file_name=" request_data=https://www.yisu.com/zixun/new_socket.recv (1024) .decode (utf - 8) 如果request_data !=": print (f '有收到新的信息,信息如下:\ n {request_data}’) file_name=request_data.splitlines () [0]。分割(' ')[1] 打印(f 'file_name: {file_name}”) 如果file_name==?? file_name='/index . html ' 打印(f 'file_name: {file_name}”) 张开(curfilepath +/测试。txt”、“+”), f: f。写(file_name + ' \ n ') # 4。回复信息 试一试: f=开放(curfilepath +/htmltest + file_name, rb) 除了: 响应=癏TTP/1.1 404 NOT FOUND \ r \ n” 响应+=' \ r \ n ' 响应+=? - - - - - - - - - -文件未找到- - - - - - -” new_socket.send (response.encode (utf - 8)) 其他: html_content=f.read () f.close () 响应=癏TTP/1.1 200 OK \ r \ n”+“\ r \ n” new_socket.send (response.encode (utf - 8)) new_socket.send (html_content) def main (): # 1。创建插座 tcp_server_socket=socket.socket(插座。AF_INET socket.SOCK_STREAM) # 2。连接服务器 server_ip_port=(127.0.0.1, 8080) tcp_server_socket.bind (server_ip_port) tcp_server_socket.listen (128) 而真正的: 打印(“正在等待客户端连接……”) new_socket new_addr=tcp_server_socket.accept () new_socket_server (new_socket new_addr) new_socket.close () if __name__==癬_main__”: main ()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。