服务器:

     当客户联系时创建一个连接套接字
     从这个连接接收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. mysql desc esc 基本命令总结

    asc 按升序排列desc 按降序排列 下列语句部分是Mssql语句,不可以在access中使用. SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操 ...

  2. srm开发(基于ssh)(3)

    联系人管理 (1)客户和联系人一对多配置(重点) (2)新增联系人 -新增功能实现 -Struts2实现文件上传 (3)联系人列表 -no session问题 (4)客户和联系人级联删除 联系人管理模 ...

  3. Python 文本相似度分析

    环境 Anaconda3 Python 3.6, Window 64bit 目的 利用 jieba 进行分词,关键词提取 利用gensim下面的corpora,models,similarities ...

  4. java枚举和constant使用区别

    本文结合<Effective Java>第六章前半部分关于枚举的介绍和自己的理解及实践,讲解了Java枚举的知识点.文章发布于专栏Effective Java,欢迎读者订阅. 前言  你代 ...

  5. gulp 相关文章

    1.https://www.cnblogs.com/sxz2008/p/6370221.html 2.https://www.cnblogs.com/wujie520303/p/4964931.htm ...

  6. 亲测安装nginx1.8.1 日期2016年3月16日

    1.安装nginx tar zxvf nginx-1.8.1.tar.gz cd nginx-1.8.1 ./configure make make install /usr/local/nginx/ ...

  7. 升级openssl 到 1.0.1s 最新版

    1.下载 wget http://www.openssl.org/source/openssl-1.0.1s.tar.gz 2.解压 tar -zxf openssl-1.0.1s.tar.gz cd ...

  8. windows下memcached安装以及php_memcache.dll扩展

    http://kimi.it/258.html http://kimi.it/259.html https://www.cnblogs.com/elenaPeng/p/6877530.html htt ...

  9. JavaScript: Where to Insert JavaScript and output

    1.Javescript in <head> <!DOCTYPE html> <html> <head> <script> function ...

  10. 剑指offer--29.从上往下打印二叉树

    层序遍历,队列 ------------------------------------------------------------------------------------- 时间限制:1 ...