服务器:

     当客户联系时创建一个连接套接字
     从这个连接接收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. 使用display:table使两栏布局高度相等

    两栏布局大家应该经常用了,但是遇到坑爹的要两栏的高度对齐的话要怎么办呢? <!DOCTYPE html> <html> <head> <meta charse ...

  2. Java socket - 使用代理服务器

    为什么使用代理服务器不需要多说了. 使用Proxy Java提供了Proxy类实现使用代理进行通信. Proxy类的构造器Proxy(Proxy.Type type, SocketAddress sa ...

  3. Spring3: 在Bean定义中使用EL-表达式语言

    5.4.1  xml风格的配置 SpEL支持在Bean定义时注入,默认使用“#{SpEL表达式}”表示,其中“#root”根对象默认可以认为是ApplicationContext,只有Applicat ...

  4. 开发常用js代码段

    // 获取http传递的参数export const getRequest = ()=>{ var url = location.search; //获取url中"?"符后的 ...

  5. display:inline-block 和 float 水平排列区别?

    文档流(Document flow):浮动元素会脱离文档流,并使得周围元素环绕这个元素.而inline-block元素仍在文档流内.因此设置inline-block不需要清除浮动.当然,周围元素不会环 ...

  6. 【pat-1074】宇宙无敌加法器(高精度)

    链接:https://www.patest.cn/contests/pat-b-practise/1074 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在PAT星人开挂的世界里,每 ...

  7. L136

    Newly formed blood vessels may contribute to eye disease: studyA study of Northwestern University (N ...

  8. 程序try-catch的绝对健壮性之嵌套

    写程序的过程中,我们对try-catch在熟悉不过了,捕获异常进行处理,以保证程序的健壮性. 今日突发一想,如果我们catch中的代码异常了怎么办?我们做以下一种假设 static void Main ...

  9. Java进阶知识点4:不可变对象与并发 - 从String说起

    一.String的不可变特性 熟悉Java的朋友都知道,Java中的String有一个很特别的特性,就是你会发现无论你调用String的什么方法,均无法修改this对象的状态.当确实需要修改Strin ...

  10. 好强大的页面功能调试(js调试,查找js绑定的事件)值得学习

    引自:http://www.poluoluo.com/jzxy/201209/178110_2.html 这篇文章是根据目前 chrome 稳定版(19.0.1084.52 m)写的,因为 googl ...