服务器:

     当客户联系时创建一个连接套接字
     从这个连接接收HTTP请求(*)
     解释该请求所请求的特定文件 
     从服务器的文件系统获取该文件
     并发送文件内容
     如果文件不存在,则返回“404 Not Found”(*)

客户端:

客户端可以与服务器建立TCP连接

客户端通过TCP连接请求服务器端的某一文件

在客户端显示介绍到的文件内容

注:在运行此文件前,server.py目录下需要包含file文件夹,里面装有服务器里的文件,客户端可以向服务器请求file里的文件。

readme:首先打开server.py,开启服务器
        然后打开client.py,输入文件名,包括后缀
        服务器文件系统为file文件夹
        client.py的命令行窗口中出现文件的具体信息
        按任意键关闭客户端

client.py

  1. import socket
  2. serverName = '127.0.0.1'
  3. serverPort = 50008
  4. clientSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  5. clientSocket.connect((serverName,serverPort))
  6. print 'Input the http request:'
  7. sentence = ''
  8. while True:
  9. tmp = raw_input()
  10. sentence = sentence + tmp
  11. if(tmp==''):break
  12. clientSocket.send(sentence)
  13. receiveSentence = clientSocket.recv(1024)
  14. print 'From Server:', receiveSentence
  15. isEnd = raw_input()
  16. clientSocket.close()

server.py

  1. import socket
  2. import os
  3. serverPort = 50008
  4. serverSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  5. serverSocket.bind(('127.0.0.1',serverPort))
  6. serverSocket.listen(1)
  7. print 'The server is ready to receive'
  8. while 1:
  9. connectionSocket, addr = serverSocket.accept()
  10. sentence = connectionSocket.recv(1024)
  11. ans = ''
  12. flag = False;
  13. for ch in sentence:
  14. if(ch == ' ' and flag ==True):break
  15. if(flag == True):
  16. ans = ans + ch;
  17. elif(ch==' '):
  18. flag = True;
  19. path = 'file//' + ans
  20. if(os.path.exists(path)==False):
  21. connectionSocket.send('404 Not Found')
  22. else:
  23. file = open( path,'r')
  24. while 1:
  25. data = file.read(1024)
  26. if not data:break
  27. connectionSocket.send(data)
  28. file.close()
  29. connectionSocket.close()

python一个简单的web服务器和客户端的更多相关文章

  1. 自己动手模拟开发一个简单的Web服务器

    开篇:每当我们将开发好的ASP.NET网站部署到IIS服务器中,在浏览器正常浏览页面时,可曾想过Web服务器是怎么工作的,其原理是什么?“纸上得来终觉浅,绝知此事要躬行”,于是我们自己模拟一个简单的W ...

  2. 一个简单的web服务器

    写在前面 新的一年了,新的开始,打算重新看一遍asp.net本质论这本书,再重新认识一下,查漏补缺,认认真真的过一遍. 一个简单的web服务器 首先需要引入命名空间: System.Net,关于网络编 ...

  3. Tomcat剖析(一):一个简单的Web服务器

    Tomcat剖析(一):一个简单的Web服务器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三):连接器 ...

  4. 自己模拟的一个简单的web服务器

    首先我为大家推荐一本书:How Tomcat Works.这本书讲的很详细的,虽然实际开发中我们并不会自己去写一个tomcat,但是对于了解Tomcat是如何工作的还是很有必要的. Servlet容器 ...

  5. 《深度解析Tomcat》 第一章 一个简单的Web服务器

    本章介绍Java Web服务器是如何运行的.从中可以知道Tomcat是如何工作的. 基于Java的Web服务器会使用java.net.Socket类和java.net.ServerSocket类这两个 ...

  6. 一个简单的Web服务器-支持Servlet请求

    上接 一个简单的Web服务器-支持静态资源请求,这个服务器可以处理静态资源的请求,那么如何处理Servlet请求的呢? 判断是否是Servlet请求 首先Web服务器需要判断当前请求是否是Servle ...

  7. 一个简单的Web服务器-支持静态资源请求

    目标 实现一个简单的Web服务器,能够根据HTTP请求的URL响应对应的静态资源,如果静态资源不存在则响应404. HttpServer 使用ServerSocket实现的一个服务器,request根 ...

  8. [置顶] 在Ubuntu下实现一个简单的Web服务器

    要求: 实现一个简单的Web服务器,当服务器启动时要读取配置文件的路径.如果浏览器请求的文件是可执行的则称为CGI程序,服务器并不是将这个文件发给浏览器,而是在服务器端执行这个程序,将它的标准输出发给 ...

  9. python超简单的web服务器

    今天无意google时看见,心里突然想说,python做web服务器,用不用这么简单啊,看来是我大惊小怪了. web1.py   1 2 3 #!/usr/bin/python import Simp ...

随机推荐

  1. jQuery的序列化元素 serialize()方法 serializeArray()方法 param()方法

    当提交的表单元素较多时用serialize()方法,serialize()方法也是作用于一个jQuery的对象,它能够将DOM元素内容序列化为字符串,用于Ajax请求. serialize() 方法通 ...

  2. CocoaPods学习系列2——使自己的项目支持CocoaPods管理

    该篇记录使自己的项目支持CocoaPods管理. 要达到这一目的,需要如下步骤: 1.将自己的项目提交到github,添加开源协议license 2.添加podspec文件 3.验证podspec,成 ...

  3. Hypernetes简介——真正多租户的Kubernetes Distro

    http://www.dockone.io/article/838 Hypernetes是一个真正多租户的Kubernetes Distro. Hypernetes在Kubernetes基础上增加了多 ...

  4. "Entity Framework数据插入性能追踪"读后总结

    园友莱布尼茨写了一篇<Entity Framework数据插入性能追踪>的文章,我感觉不错,至少他提出了问题,写了出来,引起了大家的讨论,这就是一个氛围.读完文章+评论,于是我自己也写了个 ...

  5. yii2:属性

    yii2:属性 在 PHP 中,类的成员变量也被称为属性(properties). 以Foo.php类文件为例: 继承yii\base\Object类(基于类内的 getter 和 setter(读取 ...

  6. UVA 1626 区间dp、打印路径

    uva 紫书例题,这个区间dp最容易错的应该是(S)这种匹配情况,如果不是题目中给了提示我就忽略了,只想着左右分割忘记了这种特殊的例子. dp[i][j]=MIN{dp[i+1][j-1] | if( ...

  7. saltstack笔记

    Saltstack类似于puppet salt的核心功能使用命令 发送到远程系统是并行的而不是串行的使用安全加密的协议使用最小最快的网络载荷提供简单的编程接口 Python编写,相当轻量级通讯层采用z ...

  8. DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN原理总结及对比

    DCGAN.WGAN.WGAN-GP.LSGAN.BEGAN原理总结及对比 from:https://blog.csdn.net/qq_25737169/article/details/7885778 ...

  9. 内存保护机制及绕过方案——从堆中绕过safeSEH

    1.1    SafeSEH内存保护机制 1.1.1    Windows异常处理机制 Windows中主要两种异常处理机制,Windows异常处理(VEH.SEH)和C++异常处理.Windows异 ...

  10. LeetCode OJ:Sqrt(x)(平方根)

    Implement int sqrt(int x). Compute and return the square root of x. 简单的二分法,注意mid应该选为long,否则容易溢出: cla ...