2 web服务器案例

1.老师给的思路

#tcp socket 服务端

socket = socket.socket()
socket.bind()
socket.listen()
client_socket = socket.accept()

while True:
    p = Process(target=fun, args=())
    p.start()
    client_socket.close()

def fun(client_socket):

    #接受数据
        #request_data = recv(1024)
        #print(request_data)
    #解析Http报文数据 request_data
    #提取请求方式
    #提取请求路径path
        HTML_ROOT_DIR = "./html"
        path = /index.html
    /login.html
        try:
            file = open("index.html")
        data = file.read()
        file.close()

        except IOError:
        """
        HTTP1.1 404 not found\r\n
        \r\n
        not found
        """

    #返回相应数据
        """
        HTTP1.1 200 OK\r\n
        \r\n
        hello itcast
        """
    #send()
    #close()

2)版本1:主进程程序

from socket import *
from multiprocessing import Process

def fun(client_socket):
  pass

def main():

    #tcp socket 服务端
    server_socket = socket(AF_INET,SOCK_STREAM)
    server_socket.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)  #防止端口不能重复访问
    server_socket.bind(("",7788))
    server_socket.listen(10)
    client_socket = server_socket.accept()   #等待接受电话

    while True:
        p = Process(target=fun, args=(client_socket,))
        p.start()
        client_socket.close()

    server_socket.close()

if __name__ == "__main__":
    main()

3)版本2:获取http报文头

from socket import *
from multiprocessing import Process

def fun(client_socket,client_addr):

    #接受数据
        #request_data = recv(1024)
        #print(request_data)
    request_data = client_socket.recv(1024)
    print("[%s]\n%s"%(client_addr,request_data))

    #解析Http报文数据 request_data
    #提取请求方式
    #提取请求路径path
    #返回相应数据
    #send()
    #close()

def main():

    #tcp socket 服务端
    server_socket = socket(AF_INET,SOCK_STREAM)
    server_socket.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)  #防止端口不能重复访问
    server_socket.bind(("",8080))
    server_socket.listen(10)

    while True:
        client_socket, client_addr = server_socket.accept()  # 等待接受电话
        p = Process(target=fun, args=(client_socket,client_addr,))
        p.start()
        client_socket.close()

    server_socket.close()

if __name__ == "__main__":
    main()

    

    

4)版本3:获取html的内容

from socket import *
from multiprocessing import Process

def fun(client_socket,client_addr):

    #接受数据
        #request_data = recv(1024)
        #print(request_data)
    request_data = client_socket.recv(1024)
    print("[%s]\n%s"%(client_addr,request_data))

    request_data = str(request_data)
    #解析Http报文数据 request_data

    #提取请求方式
    print(request_data[2:5])
    request_method = request_data[2:5]

    #提取请求路径path
    print(request_data[6:8])

    #返回相应数据
    error_data = """
                HTTP1.1 404 not found\r\n
                \r\n
                not found
                """
    #HTML_ROOT_DIR = "./html"
    #path = "index.html"
    if request_method == "GET":
        try:
            file = open("./html/index.html")
            data = file.read()
            print(data)
            file.close()

        except IOError:
            error_data

    #send()
    #close()

def main():

    #tcp socket 服务端
    server_socket = socket(AF_INET,SOCK_STREAM)
    server_socket.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)  #防止端口不能重复访问
    server_socket.bind(("",8080))
    server_socket.listen(10)

    while True:
        client_socket, client_addr = server_socket.accept()  # 等待接受电话
        p = Process(target=fun, args=(client_socket,client_addr,))
        p.start()
        client_socket.close()

    server_socket.close()

if __name__ == "__main__":
    main()
时间: 2024-10-04 15:29:02

2 web服务器案例的相关文章

小型公司访问web服务器案例

今天主要给大家带来一个小型公司的网络搭建,保证每一台计算机都可以访问www.ntd1711.com. 实验名称:小型公司网络的搭建 实验拓扑:实验目的:确保每个终端可以访问www.ntd1711.com(192.168.30.88)地址规划: 设备 IP地址及子网掩码 所属vlan 网关 PC1 192.168.10.1/24 VLAN10 192.168.10.254 PC2 192.168.20.2/24 VLAN20 192.168.20.254 PC3 192.168.10.3/24 V

Python基础Web服务器案例

一.WSGI 1.PythonWeb服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI) 是Python应用程序或框架和Web服务器之间的一种接口,已经被广泛接受, 它已基本达成它的可移植性方面的目标. 2.WSGI 没有官方的实现, 因为WSGI更像一个协议. 只要遵照这些协议, WSGI应用(Application)都可以在任何服务器(Server)上运行, 反之亦然. 3.WSGI允许开发者将选择web框架和web服务器分开,web服务器

web服务器,应用程序服务器,http服务器的区别

WEB服务器.应用程序服务器.HTTP服务器有何区别?IIS.Apache.Tomcat.Weblogic.WebSphere都各属于哪种服务器? 这个概念很重要. Web服务器的基本功能就是提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL.与客户端的浏览器配合.因为Web服务器主要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的. 应用程序服务器(简称应用服务器),我们先看一下微软对它的定义:"我们把应用程序服务器定义为"作为服务器执

heartbeat 配置两台web服务器高可用集群案例

通过heartbeat 配置两台web服务器高可用集群案例: 拓扑: web1:192.168.0.101 hostname: web1.example.com web2:192.168.0.102 hostname:web2.example.com vip:192.168.0.254 nfs服务器:192.168.0.100(存放web页面) 注意: 1主机名要与uname -n 保持一致 2.web1与web2主机的date时间保持同步 3.web1与web2,ssh双机互信通信 4.关闭i

windbg定位WEB性能瓶颈案例一则

测试环境 服务器:II服务器 网站:门户网站 条件 并发: 2000 LoadRunner思考时间:1s 表现 CPU:100% 对应w3wp进程 WebService–>Current connections:2300 DB:CPU 10% 无压力 压力降低后表现 随着并发量下降,CPU 和 WebService–>Current connections 随着下降,随后恢复正常: 分析 1)IIS的CPU达到100%,DB的CPU只有10%,瓶颈可能在WEB程序端: 2)压力降低后,CPU

高性能web服务器nginx(一)之基本概念

说明本篇文章大部分参考此人的博文:http://freeloda.blog.51cto.com/2033581/1285722,建议若想继续深入学习nginx时最好先看下此人所写的文章,总结的很详细,然后在找相关的书籍和查阅官方文档学习. 一.NGINX介绍 1 简介 传统上基于进程或线程模型架构的web服务通过每进程或每线程处理并发连接请求,这势必会在网络和I/O操作时产生阻塞,其另一个必然结果则是对内存或CPU的利用率低下.生成一个新的进程/线程需要事先备好其运行时环境,这包括为其分配堆内存

Linux服务器集群架构部署搭建(四)WEB服务器LNMP/LAMP搭建部署及站点产品安装(1)

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想. 作者:燁未央_Estelle声明:测试学习,不足之处,欢迎指正. 第一章 集群WEB服务器LNMP生产应用 1.1 Nginx的应用场合:根据功能来进行应用 ①静态服务器(图片,视频服务)国内使用的只有两款,另一个是lighttpd.百度贴吧.豆瓣.html.js.css.flv等. ②动态服务:nginx+fastcgi的方式运行php.jsp.动态的并发很少(根据优化达到500-1500),

从windows服务器中的java及jsp程序迁移到Linux服务器案例

1.证明了java程序一次编写到处运行,同时也证明了java程序的跨平台特性,基本上不要做很大的修改就可以正常运行程序: 2.做到了数据层与业务层上的物理分离,把Windows做数据库服务器,Linux做web服务器: 3.发生了一个错误: 编码UTF8的不可映射字符,是因为java程序中存放了中文字符,所以编译通不过,该访法可以"javac -encoding gbk  JDBCconnection.java"解决字符问题,但通用性还不行. 案例:Linux  web--http:/

Web服务器(Apache)虚拟主机的配置

一.定义    所谓虚拟主机是指在一台服务器里运行几个网站,提供WEB.FTP.Mail等服务.    二.虚拟主机的实现方法有三种:    基于IP的方法,基于主机名的方法和基于端口的法官法.    ①基于IP的方法:    在服务器里绑定多个IP,然后配置WEB服务器,把多个网站绑定在不同的IP上.访问不同的IP,就看到不同的网站.    ②基于端口的方法:    一个IP地址,通过不同的端口实在不同网站的访问.    ③基于主机名的方法: 设置多个域名的A记录,使它们解析到同一个IP地址上