#一个简单的接受请求然后传输请求文件的小程序
#!/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收发报文
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...