python 原始http服务器(网络01)

Posted on Posted in python
Tips: 本文创建于2016年5月12日,已超过 2 年,内容或图片可能已经失效!

> server

  1. #! /usr/bin/env python  
  2. # -*- coding: utf-8 -*-  
  3. # vim:fenc=utf-8  
  4.   
  5. import socket  
  6.   
  7. HOST = ''  
  8. PORT = 8888  
  9. reply = 'yes'  
  10.   
  11. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
  12. # 允许地址重用  
  13. s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)  
  14. s.bind((HOST,PORT))  
  15. # 最大连接  
  16. s.listen(3)  
  17. conn, addr = s.accept()  
  18. print conn  
  19. print addr  
  20. # 接受的最大字节  
  21. request = conn.recv(1024)  
  22.   
  23. print 'request is ' , request  
  24. print 'Connected by ', addr  
  25.   
  26. conn.sendall(reply)  
  27. conn.close()  

> client

  1. #! /usr/bin/env python  
  2. # -*- coding: utf-8 -*-  
  3. # vim:fenc=utf-8  
  4.   
  5. import socket  
  6. HOST = '127.0.0.1'  
  7. PORT = 8888  
  8.   
  9. request = 'can you hear me ?'  
  10. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
  11. s.connect((HOST, PORT))  
  12. s.sendall(request)  
  13. reply = s.recv(1024)  
  14. print 'replay is ', reply  
  15. s.close()  

> 包含图片

  1. #! /usr/bin/env python  
  2. # -*- coding: utf-8 -*-  
  3. # vim:fenc=utf-8  
  4.   
  5.   
  6. import socket  
  7.   
  8. # Address  
  9. HOST = ''  
  10. PORT = 8000  
  11.   
  12. # Prepare HTTP response  
  13. text_content = '''HTTP/1.x 200 OK   
  14. Content-Type: text/html 
  15.  
  16. <head> 
  17. <title>WOW</title> 
  18. </head> 
  19. <html> 
  20. <p>Wow, Python Server</p> 
  21. <IMG src="test.png"/> 
  22. </html> 
  23. '''  
  24.   
  25. # Read picture, put into HTTP format  
  26. f = open('test.png','rb')  
  27. pic_content = ''' 
  28. HTTP/1.x 200 OK   
  29. Content-Type: image/png 
  30.  
  31. '''  
  32. pic_content = pic_content + f.read()  
  33. f.close()  
  34.   
  35. # Configure socket  
  36. s    = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
  37. s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)  
  38. s.bind((HOST, PORT))  
  39.   
  40. # infinite loop, server forever  
  41. while True:  
  42.     # 3: maximum number of requests waiting  
  43.     s.listen(3)  
  44.     conn, addr = s.accept()  
  45.     request    = conn.recv(1024)  
  46.     method    = request.split(' ')[0]  
  47.     src            = request.split(' ')[1]  
  48.   
  49.     # deal with GET method  
  50.     if method == 'GET':  
  51.         # ULR      
  52.         if src == '/test.png':  
  53.             content = pic_content  
  54.         else: content = text_content  
  55.   
  56.         print 'Connected by', addr  
  57.         print 'Request is:', request  
  58.         conn.sendall(content)  
  59.     # close connection  
  60.     conn.close()  

[参考][1]

[1]: http://python.jobbole.com/82763/

» 转载请注明来源:若我若鱼 » python 原始http服务器(网络01)

Leave a Reply

Your email address will not be published. Required fields are marked *

one × four =