青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

socketref,再見!高德

https://github.com/adoggie

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用鏈接

留言簿(54)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜


dvr項目中flex駐留在瀏覽器,而影響播放程序是獨立的進程,sandbox的安全問題導致flex的代碼無法直接與播放進程IPC通信,那只有通過公網IP的主機進行橋接。
很多年以前用過foundstone系列的工具,也有socket轉向的功能,包括在5173時做過lsp的底層轉向軟件(仿sockcap),原理當然是相當簡單,python是首選工具。
代碼接收兩端建立socket進來,并根據相同的id號來進行socket配對,之后兩個socket之間就實現互相轉發(技術同之前寫的http代理服務器 )

  1 # -- coding:utf-8 --
  2 
  3 import socket,traceback,os,os.path,sys,time,struct,base64,gzip,array,threading
  4 import select,json
  5 
  6 
  7 '''
  8 {'id','type'}
  9 
 10 type - 'mapshow','imageplay'
 11 id - 一次會話的編號
 12 
 13 imageplay 與xbridge建立socket連接,并注冊一個會話編號(隨機產生)
 14 imageplay啟動mapshow,并將會話編號傳遞給mapshow,mapshow建立xbridge的連接,并提交會話編號
 15 xbridge將雙向傳遞相同會話編號的數據到對方
 16 
 17 sock1的客戶必須等sock2連接進入之后發送數據,否則將sock1數據轉發給sock2時將產生異常
 18 '''
 19 
 20 class ConnectionPair:
 21     def __init__(self,app):
 22         self.app = app
 23         self.id = ''
 24         self.sock1=None #imageplay上來的連接
 25         self.sock2=None #第二個連接上來的對象mapdemo
 26         
 27     def start(self):
 28         t = threading.Thread(target=self.threadRecv)
 29         t.start()
 30         
 31     def onLostConnection(self):
 32         try:
 33             print 'connection pair lost..'
 34             self.sock1.close()
 35             self.sock2.close()
 36             self.app.onConnectionPairBroken(self)
 37         except:
 38             traceback.print_exc()
 39         
 40     def threadRecv(self):
 41         print 'service threading entering'
 42         import select
 43         while True:
 44             fds = []
 45             if self.sock1:
 46                 fds.append(self.sock1)
 47             if self.sock2:
 48                 fds.append(self.sock2)
 49             #fds = [self.sock1,self.sock2]
 50             try:
 51                 #sock2未連接進來前,將不接收sock1上產生數據
 52                 #print 'fds:',len(fds),fds
 53                 rds,wds,eds = select.select(fds,[],[],1)
 54                 if not rds:#timeout 
 55                     continue
 56                         
 57                 for s in rds:
 58                     d = s.recv(1024)
 59                     #print d
 60                     if not d:
 61                         raise 'any jump'
 62                     
 63                     to = self.sock2
 64                     if s == self.sock2:
 65                         to = self.sock1
 66                     #print 'redirect data:',d
 67                     to.sendall(d)        
 68             except:
 69                 traceback.print_exc()
 70                 self.onLostConnection()
 71                 break
 72         
 73         print 'ConnThread Exiting'
 74             
 75             
 76     
 77 
 78 class XBridge:
 79     def __init__(self,addr=('',12788)):
 80         self.sock = None
 81         self.addr = addr
 82         self.conns={} #{id}
 83         self.mtxconns = threading.Lock()
 84         
 85     def onConnectionPairBroken(self,cp):
 86         self.mtxconns.acquire()
 87         del self.conns[cp.id]
 88         print 'onConnectionPairBroken(),removed:',cp.id
 89         self.mtxconns.release()
 90         
 91     def start(self):
 92         try:
 93             
 94             self.sock = socket.socket()
 95             #print 'lll',self.addr
 96             self.sock.bind( tuple(self.addr) )
 97             self.sock.listen(5)
 98             
 99             self.thread = threading.Thread(target=self.service_loop)
100             self.thread.start()
101             print 'xbridge started!'
102             self.thread.join()
103         except:
104             traceback.print_exc()
105             return False
106         
107     def shutdown(self):
108         self.sock.close()
109          
110     
111     def service_loop(self):
112         
113         while True:
114             fdr = []
115             fdr.append(self.sock)
116             infds,wr,e = select.select(fdr,[],[])
117             if e:
118                 print 'service thread exit'
119                 break
120             for s in infds:
121                 if s == self.sock: #新連接到達 
122                     sock = None
123                     try:                        
124                         sock,peer = self.sock.accept()    #異常產生表示self.sock被強行關閉
125                         print 'new client incoming',peer
126                     except
127                         return
128                     thread = threading.Thread(target=self.threadNewClient,args=(sock,))
129                     thread.start()
130     
131     def threadNewClient(self,sock):
132         #等待注冊信息進入 ,5 秒超時
133         try:
134             fdr = [sock,]
135             print 'enter select '
136             infds,wr,e = select.select(fdr,[],[],5)
137             
138             if not infds:
139                 sock.close()
140                 print 'client register timeout'
141                 return #接收超時
142             d = sock.recv(1024)
143             d = json.loads(d)
144             id,type = d['id'],d['type']
145             connpair = None
146             print id,type
147             self.mtxconns.acquire()
148             if type == 'imageplay':
149             
150                 cp = ConnectionPair(self)
151                 cp.id = id
152                 cp.sock1 = sock
153                 self.conns[id] = cp
154                 cp.start()
155                 
156             elif type =='mapshow':
157                 connpair = self.conns.get(id,None)
158                 if connpair == None: #沒找到imageplay
159                     sock.close()
160                     print 'mapshow cannt found imageplay..'
161                 else:
162                     print 'mapclient matched!'
163                     connpair.sock2 = sock                    
164             else:
165                 print 'unknown command id:',id,type
166                 
167             self.mtxconns.release()    
168         except:
169             sock.close()
170             traceback.print_exc()
171         
172 if __name__=='__main__':
173     XBridge().start() #default '',12788
174    
posted on 2012-04-14 17:42 放屁阿狗 閱讀(1705) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲综合色自拍一区| 亚洲视频专区在线| 久久精品一本久久99精品| 亚洲欧美成人综合| 亚洲欧美影音先锋| 欧美中文字幕不卡| 久久精品免费| 久久综合电影一区| 美女精品自拍一二三四| 你懂的国产精品永久在线| 欧美成人dvd在线视频| 欧美成人午夜影院| 国产精品第2页| 国产一区 二区 三区一级| 亚洲大胆人体视频| 在线视频日韩精品| 久久久久久久精| 欧美成人精品| 夜夜狂射影院欧美极品| 校园春色综合网| 牛牛国产精品| 国产精品麻豆欧美日韩ww| 黄色成人在线网址| 一区二区三区国产在线| 午夜久久99| 亚洲成色精品| 亚洲第一黄网| 久久成人一区二区| 免费亚洲婷婷| 一本色道**综合亚洲精品蜜桃冫 | 国产精品尤物| 亚洲欧洲一区二区在线播放| 亚洲欧美bt| 亚洲第一色中文字幕| 亚洲午夜激情网站| 美女视频网站黄色亚洲| 国产精品日韩在线播放| 91久久综合| 久久免费精品视频| 中国成人在线视频| 欧美国产激情| 亚洲福利av| 久久频这里精品99香蕉| 亚洲色诱最新| 欧美日韩精品在线播放| 亚洲国产另类久久精品| 久久riav二区三区| 99视频超级精品| 免费永久网站黄欧美| 国产专区精品视频| 欧美影院精品一区| 一区二区三欧美| 欧美激情精品久久久久久变态| 国产一区二区高清| 欧美在线免费观看视频| 一本久道久久综合中文字幕 | 国产欧美一区二区三区久久 | 亚洲电影av在线| 久久福利资源站| 亚洲一区二区三区精品在线| 欧美美女操人视频| 亚洲国产天堂久久综合| 蜜臀99久久精品久久久久久软件| 亚洲欧美国产77777| 国产精品一区二区三区久久| 亚洲天堂av在线免费| 一本大道久久a久久精二百| 欧美人成在线视频| 99re这里只有精品6| 亚洲人成艺术| 欧美日本网站| 亚洲欧美成人网| 亚洲摸下面视频| 国产午夜精品麻豆| 久久久美女艺术照精彩视频福利播放| 亚洲欧美激情视频| 国产一区日韩一区| 亚洲精品色婷婷福利天堂| 亚洲综合不卡| 国产麻豆9l精品三级站| 欧美在线播放一区| 欧美有码在线视频| 激情久久五月天| 欧美fxxxxxx另类| 欧美欧美在线| 欧美一区二区三区视频免费播放| 亚洲性图久久| 激情久久久久| 亚洲精品在线一区二区| 国产精品外国| 欧美成人a∨高清免费观看| 欧美另类人妖| 久久久久国色av免费观看性色| 久久精品免费播放| 99精品久久免费看蜜臀剧情介绍| 99国产一区| 一区二区亚洲精品| 亚洲精品黄色| 国产视频精品xxxx| 亚洲国产视频直播| 国产精品日韩高清| 亚洲丰满在线| 国产久一道中文一区| 欧美刺激性大交免费视频| 欧美精品日韩一区| 久久精品国产久精国产爱| 欧美成人午夜激情视频| 久久国产精品99精品国产| 欧美成人精品在线观看| 久久精品国产第一区二区三区最新章节| 亚洲最新合集| 亚洲欧美视频在线观看视频| 亚洲国产高清视频| 亚洲一区二区三区国产| 伊人狠狠色j香婷婷综合| 亚洲日本成人在线观看| 国产在线成人| 日韩午夜高潮| 亚洲欧洲午夜| 久久久福利视频| 欧美在线一级va免费观看| 欧美精品一区二区三区四区| 久久男人资源视频| 国产精品国色综合久久| 亚洲黄色大片| 亚洲国产精品传媒在线观看| 午夜在线视频观看日韩17c| 亚洲一区二区免费看| 欧美电影在线免费观看网站| 欧美77777| 韩日精品在线| 欧美影院成年免费版| 欧美伊人久久久久久久久影院 | 久久精品1区| 欧美无乱码久久久免费午夜一区| 欧美激情一区三区| 在线观看视频免费一区二区三区| 午夜久久资源| 久久精品一本久久99精品| 国产精品视频网站| 日韩视频在线你懂得| 欧美高清视频在线| 黄色亚洲免费| 久久av一区| 久久精品国产99国产精品| 国产日韩在线一区| 午夜精品免费在线| 欧美一区二区三区免费观看视频 | 一区二区不卡在线视频 午夜欧美不卡在 | 久久精品中文| 久久这里只有精品视频首页| 国产一区二区三区的电影| 午夜精品久久久久影视| 久久高清一区| 亚洲第一免费播放区| 麻豆久久精品| 亚洲精品一区二区三区在线观看| 99热这里只有精品8| 国产精品久久国产愉拍| 亚洲欧美另类久久久精品2019| 久久久久国色av免费看影院| 韩国欧美一区| 欧美+日本+国产+在线a∨观看| 欧美激情影音先锋| 亚洲欧美日韩国产综合精品二区| 国产精品免费网站在线观看| 久久国产日韩欧美| 欧美成人有码| 亚洲综合精品| 激情国产一区二区| 欧美精品导航| 午夜精品免费在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 麻豆成人在线播放| 欧美国产日韩一区二区| 亚洲伊人一本大道中文字幕| 国产农村妇女精品一二区| 久久av一区| 91久久在线视频| 久久av一区二区三区亚洲| 91久久精品国产91久久性色| 国产精品国产三级国产a| 久久国产欧美精品| 99精品免费| 久久综合中文字幕| 亚洲网站视频福利| 欧美日韩一区二区三区四区在线观看 | 久久激情综合| 99v久久综合狠狠综合久久| 亚洲欧美激情视频| 91久久香蕉国产日韩欧美9色| 欧美伦理a级免费电影| 久久久99精品免费观看不卡| 亚洲精一区二区三区| 麻豆精品在线视频| 午夜视频久久久| 日韩一级免费观看| 国产在线播精品第三| 国产精品免费网站在线观看| 欧美日韩免费观看中文|