国产探花免费观看_亚洲丰满少妇自慰呻吟_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            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鹤庆县| 武川县| 雅江县| 泸西县| 都安| 西贡区| 廉江市| 云林县| 沭阳县| 通海县| 南充市| 黔东| 鸡东县| 吉安市| 万年县| 封丘县| 栾川县| 兴国县| 呼玛县| 桂阳县| 许昌市| 景洪市| 玛沁县| 五大连池市| 颍上县| 铜川市| 诸暨市| 塔河县| 南康市| 汤原县| 千阳县| 天等县| 凤冈县| 台江县| 都江堰市| 华亭县| 界首市| 南雄市| 怀安县| 烟台市| 南漳县|