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

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>
            亚洲欧美日韩一区在线| 欧美精品久久一区二区| 欧美精品福利在线| 一区二区三区精品视频| 日韩午夜在线| 国产精品免费福利| 久久人人97超碰国产公开结果| 欧美在线看片| 久久米奇亚洲| 亚洲三级毛片| 亚洲免费影院| 亚洲免费不卡| 久久性天堂网| 久久高清一区| 国产精品成人v| 欧美国产综合视频| 国产日产欧美精品| 国产精品一区二区黑丝| 亚洲网友自拍| 久久精品国产77777蜜臀| 亚洲国产精品久久久久秋霞蜜臀 | 久久久久久免费| 亚洲天堂偷拍| 久久av在线看| 免费观看一级特黄欧美大片| 欧美三级乱码| 亚洲人成毛片在线播放女女| 国产精品亚洲精品| 欧美激情精品久久久久久免费印度 | 欧美成人在线免费观看| 欧美三级中文字幕在线观看| 亚洲精品色图| 亚洲影视在线| 国产精品日韩欧美综合| 亚洲一区免费视频| 性欧美大战久久久久久久久| 国产美女一区二区| 欧美一区日韩一区| 欧美69视频| 一区二区三区欧美在线观看| 欧美日韩三区四区| 亚洲欧美日韩成人| 久久视频在线看| 国产欧美日韩一区| 久久不射中文字幕| 亚洲国产精品精华液网站| 亚洲欧洲在线一区| 欧美视频中文在线看| 欧美伊久线香蕉线新在线| 久久久精品性| 在线一区二区三区四区| 国产色综合天天综合网| 欧美成人日本| 久久国产精品一区二区三区四区 | 亚洲视频在线播放| 久久综合九色欧美综合狠狠| 亚洲作爱视频| 亚洲黄色有码视频| 国内精品久久久久伊人av| 欧美三级在线| 欧美日韩成人综合| 亚洲一级在线| 日韩午夜高潮| 亚洲精品在线看| 亚洲日本成人| 亚洲精品小视频| 亚洲视频精选| 一区二区欧美国产| 亚洲美女av在线播放| 亚洲第一综合天堂另类专| 午夜在线精品偷拍| 亚洲尤物视频在线| 99视频一区| 99精品欧美一区二区三区综合在线 | 欧美国产精品人人做人人爱| 免费不卡欧美自拍视频| 久久亚洲影音av资源网| 久久精品一区二区三区不卡牛牛 | 亚洲精品护士| 亚洲日韩视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲另类在线一区| 亚洲欧美日韩在线| 久久久国产精品一区二区三区| 久久精品国产欧美亚洲人人爽| 久久久久国内| 久久亚洲精品视频| 亚洲激情综合| 国产精品久久综合| 亚洲欧美怡红院| 91久久综合| 欧美a级片网| 久久久99免费视频| 国产在线播放一区二区三区| 亚洲网友自拍| 99视频精品免费观看| 国产精品视频自拍| 亚洲欧美日韩国产精品| 久久爱www久久做| 国产精品成人va在线观看| 91久久夜色精品国产网站| 亚洲黄网站在线观看| 亚洲中无吗在线| 国产亚洲精品一区二555| 国产农村妇女精品| 亚洲欧洲视频| 欧美激情1区| 夜夜精品视频一区二区| 午夜激情一区| 国产精品久久久久久久久久直播 | 欧美成人精品h版在线观看| 国产精品国产一区二区 | 欧美中在线观看| 欧美色123| 亚洲国产精品一区二区www在线| 亚洲一区二区三区在线观看视频| 免播放器亚洲| 久久嫩草精品久久久久| 国产日产欧产精品推荐色 | 亚洲一二区在线| 欧美日韩综合另类| 99综合视频| aⅴ色国产欧美| 欧美日韩中文字幕| 亚洲欧美精品一区| 亚洲欧美在线免费| 国产亚洲免费的视频看| 久久亚洲图片| 欧美二区在线观看| 日韩视频在线观看| 一区二区三区精品久久久| 欧美天堂亚洲电影院在线观看| 亚洲一区二区三区免费视频| 亚洲一区二区三区在线观看视频| 国产欧美日韩高清| 欧美国产先锋| 亚洲盗摄视频| 欧美激情91| 欧美日韩精品不卡| 亚洲欧美一区二区激情| 亚洲欧美综合| 日韩一级黄色av| 香蕉精品999视频一区二区| 精东粉嫩av免费一区二区三区| 欧美激情a∨在线视频播放| 欧美日韩在线视频观看| 久久综合色88| 欧美日韩精品综合在线| 欧美成人视屏| 国产美女精品在线| 日韩视频在线免费观看| 香蕉亚洲视频| 激情视频亚洲| 亚洲视频第一页| 狠狠色综合网站久久久久久久| 亚洲免费电影在线观看| 韩国成人精品a∨在线观看| 久久精品五月婷婷| 午夜精品一区二区三区在线视 | 亚洲美女av黄| 91久久线看在观草草青青| 欧美亚洲一区| 亚洲午夜在线观看视频在线| 免费视频一区| 亚洲人成在线观看一区二区| 夜夜嗨av色一区二区不卡| 久久免费视频一区| 亚洲激情在线观看视频免费| av成人黄色| 尤物yw午夜国产精品视频| 亚洲免费观看高清在线观看 | 久久嫩草精品久久久精品一| 欧美一区二区三区免费在线看| 国产精品激情av在线播放| 另类春色校园亚洲| 在线 亚洲欧美在线综合一区| 欧美不卡视频一区发布| 久久久夜夜夜| 日韩视频免费观看高清完整版| 亚洲国产专区校园欧美| 午夜精品久久一牛影视| 国产精品高潮在线| 亚洲综合大片69999| 欧美一区二区三区日韩| 亚洲精品专区| 久久女同精品一区二区| 91久久精品一区二区别| 9l国产精品久久久久麻豆| 欧美视频手机在线| 久久久久久9999| 久久国内精品视频| 欧美一区二区在线观看| 黄色成人在线免费| 国产精品国产三级国产a| 午夜精品久久久久久久久久久久久| 亚洲第一区在线| 久久久久久亚洲综合影院红桃 | 精品成人国产| 国产精品久久久久久久久久尿| 久久一日本道色综合久久|