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

socketref,再見(jiàn)!高德

https://github.com/adoggie

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用鏈接

留言簿(54)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜


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

  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 - 一次會(huì)話的編號(hào)
 12 
 13 imageplay 與xbridge建立socket連接,并注冊(cè)一個(gè)會(huì)話編號(hào)(隨機(jī)產(chǎn)生)
 14 imageplay啟動(dòng)mapshow,并將會(huì)話編號(hào)傳遞給mapshow,mapshow建立xbridge的連接,并提交會(huì)話編號(hào)
 15 xbridge將雙向傳遞相同會(huì)話編號(hào)的數(shù)據(jù)到對(duì)方
 16 
 17 sock1的客戶必須等sock2連接進(jìn)入之后發(fā)送數(shù)據(jù),否則將sock1數(shù)據(jù)轉(zhuǎn)發(fā)給sock2時(shí)將產(chǎn)生異常
 18 '''
 19 
 20 class ConnectionPair:
 21     def __init__(self,app):
 22         self.app = app
 23         self.id = ''
 24         self.sock1=None #imageplay上來(lái)的連接
 25         self.sock2=None #第二個(gè)連接上來(lái)的對(duì)象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未連接進(jìn)來(lái)前,將不接收sock1上產(chǎn)生數(shù)據(jù)
 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: #新連接到達(dá) 
122                     sock = None
123                     try:                        
124                         sock,peer = self.sock.accept()    #異常產(chǎn)生表示self.sock被強(qiáng)行關(guān)閉
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         #等待注冊(cè)信息進(jìn)入 ,5 秒超時(shí)
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 #接收超時(shí)
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: #沒(méi)找到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 放屁阿狗 閱讀(1704) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   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>
            亚洲综合另类| 久久色在线观看| 亚洲精品美女久久7777777| 欧美日本久久| 欧美国产精品久久| 中文在线一区| 黄色影院成人| 国产精品久久久久一区二区| 久久国产精品毛片| 亚洲婷婷国产精品电影人久久 | 欧美在线综合视频| 亚洲欧洲日本专区| 永久域名在线精品| 国产欧美日韩精品a在线观看| 美女图片一区二区| 亚洲精品国产精品国自产在线| 欧美三级小说| 欧美美女日韩| 久久精品人人| 日韩亚洲欧美一区| 亚洲精品欧洲精品| 99热这里只有精品8| 在线中文字幕日韩| 久久经典综合| 亚洲福利国产| 欧美激情在线观看| 99视频日韩| 久久精品亚洲| 亚洲香蕉网站| 在线精品福利| 国产中文一区二区三区| 久久大逼视频| 久久免费高清视频| 久久久亚洲人| 国产欧美高清| 欧美精品久久久久久久免费观看 | 欧美一级淫片aaaaaaa视频| 欧美在线观看www| 亚洲久久一区| 亚洲美女精品一区| 久久综合网hezyo| 日韩亚洲欧美一区二区三区| 久久激情视频久久| 国产欧美一区视频| 亚洲欧美日韩一区二区| 久久国产88| 亚洲美女在线国产| 亚洲午夜视频在线观看| 亚洲盗摄视频| 欧美在线观看www| 一本久久知道综合久久| 亚洲午夜精品国产| 久久亚洲精品一区二区| 欧美人成在线| 亚洲丁香婷深爱综合| 亚洲免费网址| 亚洲国产精品悠悠久久琪琪 | 免费观看在线综合| 久久一区二区三区四区五区| 亚洲国产婷婷香蕉久久久久久| 久久一区精品| 亚洲精品日韩激情在线电影| 欧美激情亚洲视频| 亚洲成色777777在线观看影院| 欧美丰满少妇xxxbbb| 一区二区三区日韩欧美精品| 久久精品国产一区二区三区 | 一区二区国产精品| 久久成人综合视频| 国产精品国产三级国产普通话三级| 韩国精品在线观看| 午夜性色一区二区三区免费视频| 欧美激情亚洲自拍| 久久久久久久欧美精品| 国产乱码精品一区二区三| 亚洲神马久久| 亚洲国产一区二区三区a毛片| 欧美专区在线观看| 国产精品一卡二| 亚洲激情第一区| 99视频一区二区三区| 一本大道久久精品懂色aⅴ| 久久在线视频在线| 久久都是精品| 黄色日韩在线| 美女视频黄免费的久久| 久久av二区| 亚洲私人影院在线观看| 欧美成人综合在线| 亚洲欧洲日本一区二区三区| 麻豆乱码国产一区二区三区| 久久精品中文| 亚洲大片一区二区三区| 亚洲欧美影院| 可以看av的网站久久看| 久久久久久久网| 永久域名在线精品| 亚洲国产视频直播| 欧美久久在线| 午夜精品视频在线观看| 亚洲欧美日韩国产中文 | 久久国产主播精品| 西瓜成人精品人成网站| 国产日韩欧美电影在线观看| 久久国产手机看片| 久久精品官网| 亚洲国产欧美日韩精品| 日韩一级精品| 国产视频一区二区三区在线观看| 老司机精品视频一区二区三区| 亚洲欧美精品伊人久久| 欧美视频免费| 性久久久久久| 亚洲欧美激情一区| 国产深夜精品| 亚洲国产日韩欧美| 国产精品日韩精品欧美精品| 久久性色av| 欧美日韩第一页| 久久久久久网址| 欧美国产日韩在线| 欧美专区18| 欧美激情1区2区3区| 欧美在线播放一区| 免费欧美日韩国产三级电影| 午夜宅男欧美| 久久久91精品国产一区二区三区| 日韩视频免费在线| 亚洲国产一区视频| 国产欧美日韩一区二区三区在线| 免费在线看一区| 国产精品久久久久久模特 | 国产精品99久久久久久白浆小说| 国产亚洲欧美一区在线观看| 亚洲日韩成人| 1000部精品久久久久久久久| 一本色道久久88综合亚洲精品ⅰ| 好看的日韩av电影| 亚洲最新色图| 亚洲欧洲在线观看| 亚洲人成网站999久久久综合| 欧美国产免费| 米奇777在线欧美播放| 国产精品激情偷乱一区二区∴| 免费人成网站在线观看欧美高清| 亚洲激情综合| 老司机精品久久| 午夜在线一区| 国产精品久久久久一区二区| 亚洲激情电影中文字幕| 激情综合视频| 欧美在线视频播放| 91久久精品国产91性色| 久久国产日韩| 国产欧美日韩亚洲一区二区三区| 一区二区欧美在线| 一本在线高清不卡dvd| 欧美精品色网| 亚洲日本aⅴ片在线观看香蕉| 亚洲国产99| 久久久蜜桃一区二区人| 免费欧美视频| 日韩系列欧美系列| 国产精品黄色| 久久精品国产精品亚洲综合| 欧美粗暴jizz性欧美20| 亚洲特级片在线| 国产欧美精品| 免费91麻豆精品国产自产在线观看| 亚洲黄网站黄| 久久国产精品网站| 亚洲日本在线观看| 国产精品综合不卡av| 久久久久久久尹人综合网亚洲| 欧美激情第三页| 亚洲欧美国内爽妇网| 精品电影一区| 国产精品国产三级国产aⅴ浪潮| 欧美一区二区三区免费视频| 欧美激情一区二区三区高清视频| 亚洲欧美激情视频| **性色生活片久久毛片| 国产精品swag| 欧美96在线丨欧| 亚洲欧美日本日韩| 亚洲国产1区| 久久在精品线影院精品国产| 一本一本久久a久久精品综合麻豆| 国产一区二区三区四区老人| 欧美极品aⅴ影院| 久久福利精品| 亚洲自拍偷拍麻豆| 亚洲欧洲一区二区三区久久| 久久久久久久尹人综合网亚洲| 亚洲作爱视频| 亚洲美女中出| 91久久精品国产| 激情小说另类小说亚洲欧美 | 韩国女主播一区二区三区| 欧美日韩免费一区|