TCP收发报文

Paste_Image.png
#一个简单的接受请求然后传输请求文件的小程序
#!/usr/bin/env python
# coding=utf-8
import socket,sys,time,re,struct,os
import sys
import urllib

HOST="localhost"   #端口
PORT=8888        #主机名
#localhost:8888//C:\Users\wang bei bei\Desktop\1.png
#http://localhost:8888//C:/Users/wang%20bei%20bei/Desktop/1.txt
#文件类型判断jpg/txt->%s 字典映射

class response():
    def __init__(self,str,html):
        self.diction={"txt":"text/plain","jpg":"text/plain","png":"image/png"}
        self.type=str.split(".")[-1]
        self.html=html
        print "html: %s"%self.html
        print "type: %s"%self.type
        print "filename:%s"%str
        with open(str,"rb") as s:
            self.content=s.read()
        print "content:%s"%self.content
    def return_string(self):
        return "%s 200 OK\r\nAccept-Ranges: bytes\r\nContent-Type:%s\r\n\r\n%s"%(self.html,self.diction[self.type],self.content)
listen_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)
####################主函数############################
print("Serving HTTP on port %s ..."%PORT)
begin=0
end=0
while True:
    connection,address=listen_socket.accept()
    print address
    connection.settimeout(20)
    while True:
        filename=connection.recv(1024)
        header=filename.split("\r\n")[0]
        filename=header.split()[1]
        filename=filename[2:]
        filename=filename.replace("%20"," ")
        html=header[-9:]
        r=response(filename,html)
        r=r.return_string()
        print "r:%s"%r
        connection.sendall(r)
        break
        print "closing the connection"
        connection.close()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • TCP协议的功能都在其首部中得以体现,TCP报文的首部前20个字节是固定的,也就是说TCP报文的首部长度的最小值是...
    阿立94s阅读 4,077评论 1 0
  • The display filter to show only SYN packets is: 参考资料 Wire...
    Shaman阅读 723评论 0 0
  • 断断续续看了一个月左右,主要分了两个阶段1-4章和5-10章。 第一阶段描述了一些关于冥想的知识例如通过呼吸实现自...
    浮生若梦弦阅读 467评论 0 0
  • 1、每个人都是一个能量体,能量体伸展爬出的每一份能量,如被看到,就变成了光明,变成了生的能量,如热情和创造力。如不...
    雨筑珊绕阅读 749评论 0 0
  • 导读:销售过程其实也是一个愉快的交流和沟通的过程,优秀的销售员总是能让客户感觉到舒服。当然,很多销售员总会遇到各种...
    晴宇家阅读 1,271评论 0 1