国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現端口復用實例代碼

2020-02-23 05:32:13
字體:
來源:轉載
供稿:網友

本文介紹Python實現端口復用實例如下所示:

#coding=utf-8import socketimport sysimport selectimport threadinghost='192.168.99.100'port=80class Thread(threading.Thread):  def __init__(self,buf,sockfd):    threading.Thread.__init__(self)    self.buf=buf    self.sockfd=sockfd  def run(self):   if len(self.buf)!=0:    if 'GET' in self.buf :  #判斷是否是瀏覽器提交的數據如果是則將提交的數據轉發至本地環回地址的80端口     s2=socket.socket(socket.AF_INET,socket.SOCK_STREAM)     s2.connect(('127.0.0.1',80))     s2.send(self.buf)     bufer=''     while 1:      recv_data=s2.recv(1024)      bufer+=recv_data      if len(recv_data)==0:       break     print bufer,len(bufer)     if len(bufer)==0:      pass          self.sockfd.send(bufer)  #將服務器發送的數據發回客戶端     s2.close     self.sockfd.close     sys.exit()    else:     'ps:connect to ssh' #如果數據不是瀏覽器提交則將其轉發至本地的22端口     s2=socket.socket(socket.AF_INET,socket.SOCK_STREAM)     s2.connect(('127.0.0.1',22))     s2.send(self.buf)     recv_data=s2.recv(4096)     conn.send(recv_data)     self.sockfd.close     s2.closes=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 ) #端口復用的關鍵點s.bind((host,port))s.listen(10)while 1: infds,outfds,errfds=select.select([s,],[],[],5) #使用select函數進行非阻塞操作 if len(infds)!=0:  conn,(addr,port)=s.accept()  print 'connected by',addr,port  data=conn.recv(1024)  t=Thread(data,conn)  t.start()s.close#coding=utf-8import socketimport sysimport selectimport threadinghost='192.168.99.100'port=80class Thread(threading.Thread):  def __init__(self,buf,sockfd):    threading.Thread.__init__(self)    self.buf=buf    self.sockfd=sockfd  def run(self):   if len(self.buf)!=0:    if 'GET' in self.buf :  #判斷是否是瀏覽器提交的數據如果是則將提交的數據轉發至本地環回地址的80端口     s2=socket.socket(socket.AF_INET,socket.SOCK_STREAM)     s2.connect(('127.0.0.1',80))     s2.send(self.buf)     bufer=''     while 1:      recv_data=s2.recv(1024)      bufer+=recv_data      if len(recv_data)==0:       break     print bufer,len(bufer)     if len(bufer)==0:      pass          self.sockfd.send(bufer)  #將服務器發送的數據發回客戶端     s2.close     self.sockfd.close     sys.exit()    else:     'ps:connect to ssh' #如果數據不是瀏覽器提交則將其轉發至本地的22端口     s2=socket.socket(socket.AF_INET,socket.SOCK_STREAM)     s2.connect(('127.0.0.1',22))     s2.send(self.buf)     recv_data=s2.recv(4096)     conn.send(recv_data)     self.sockfd.close     s2.closes=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 ) #端口復用的關鍵點s.bind((host,port))s.listen(10)while 1: infds,outfds,errfds=select.select([s,],[],[],5) #使用select函數進行非阻塞操作 if len(infds)!=0:  conn,(addr,port)=s.accept()  print 'connected by',addr,port  data=conn.recv(1024)  t=Thread(data,conn)  t.start()s.close            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊金霍洛旗| 富顺县| 望谟县| 遵化市| 犍为县| 沙坪坝区| 冀州市| 英超| 卓尼县| 吴桥县| 庆安县| 桐乡市| 信宜市| 无极县| 红安县| 西充县| 临沧市| 措勤县| 卓尼县| 都昌县| 台安县| 湾仔区| 嘉鱼县| 大厂| 义马市| 元朗区| 高密市| 峨边| 屯留县| 石家庄市| 项城市| 梧州市| 湖北省| 固安县| 涿州市| 朝阳区| 安阳县| 利津县| 灌阳县| 易门县| 买车|