freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

peergine編程手冊(cè)-預(yù)覽頁(yè)

 

【正文】 CLASSPATH環(huán)境變量中,就可以在Java應(yīng)用程序中調(diào)用Peergine的API。節(jié)點(diǎn)A節(jié)點(diǎn)BUDP v4/v6圖14. 直接UDP通信方式但在實(shí)際網(wǎng)絡(luò)環(huán)境中,某些節(jié)點(diǎn)的UDP通信是受限的。依此,Peergine提供了一個(gè)中繼服務(wù)器程序,在TCP協(xié)議之上實(shí)現(xiàn)TCP、HTTP和WebSocket三種協(xié)議的隧道功能(如下圖)。Peergine中繼服務(wù)器提供了IPV4和IPV6的轉(zhuǎn)換功能,使IPV4節(jié)點(diǎn)與IPV6節(jié)點(diǎn)之間也能互通。例如,在命令行提示符下執(zhí)行:c: “c:\Peergine\bin\”。 (AddrUDP6){FE800000:0:01B05996:42CFB70D:0:0} //轉(zhuǎn)換成UDP后的IPV6地址,端口自動(dòng)分配。 (SvrName){PGServer} (SvrAddr){0:0:0::1112:0} (CltAddr){0:0:0::1118:0} (User){pgRelay1} (Pass){} (RefPeer){}}Peergine中繼服務(wù)器應(yīng)該部署在具有公網(wǎng)IP地址且所有節(jié)點(diǎn)都能到達(dá)的網(wǎng)絡(luò)主機(jī)上。代碼示例(HTML):object id=pgAtx classid=clsid:FFC9369FA8D945988E22ED07C7628BFC width=320 height=240/object控件運(yùn)行在Windows Script Host中時(shí),使用JavaScript的ActiveXObject()函數(shù)創(chuàng)建,代碼示例(JavaScript):var pgAtx = new ActiveXObject()。 = PG_CLASS_Data:8。 = Addr=0:0:0::0:0。 = pgOnExtRequest。2) 使用通信對(duì)象初始化控件實(shí)例之后,就可以使用控件的節(jié)點(diǎn)功能函數(shù)。如果指定的通信組參數(shù)為空,則取消與通信組關(guān)聯(lián)。通信對(duì)象同步以后,就可以調(diào)用通信對(duì)象的方法。應(yīng)用程序處理完請(qǐng)求后調(diào)用控件的ObjectExtReply()函數(shù)發(fā)送應(yīng)答,控件通過(guò)網(wǎng)絡(luò)交互發(fā)送應(yīng)答數(shù)據(jù)給請(qǐng)求端節(jié)點(diǎn),請(qǐng)求端節(jié)點(diǎn)的控件回調(diào)OnReply()函數(shù)上報(bào)應(yīng)答給應(yīng)用程序。當(dāng)控件運(yùn)行在界面線程中 (例如運(yùn)行在瀏覽器中)時(shí),界面線程能夠處理消息循環(huán)??丶峁┝艘唤MOML解析器函數(shù)來(lái)輔助構(gòu)造和解析OML字符串。5) 獲取控件的窗口參數(shù)控件運(yùn)行在瀏覽器中時(shí),一個(gè)重要用途是做為視頻顯示和白板共享的窗口。通過(guò)輔助函數(shù)utilCmd()來(lái)調(diào)用這些輔助功能。為了防止某些惡意的應(yīng)用程序使用Peergine進(jìn)行偷竊用戶數(shù)據(jù)、傳輸惡意代碼等不良操作,Peergine通過(guò)使用沙盒目錄來(lái)控制文件系統(tǒng)的訪問(wèn)范圍。在下文各個(gè)功能的編程參考章節(jié)中,涉及訪問(wèn)文件系統(tǒng)時(shí),將會(huì)逐個(gè)說(shuō)明是否受到沙盒目錄限制。沙盒目錄中的文件的移入和移出通過(guò)FileCopy()命令完成,F(xiàn)ileCopy()的Src參數(shù)和Dst參數(shù)的使用規(guī)則如下:(1) Src和Dst都指定了文件路徑(非空),則Src和Dst指定的文件都必須在沙盒目錄內(nèi),否則命令調(diào)用執(zhí)行失敗。當(dāng)命令執(zhí)行時(shí),Peergine彈出文件對(duì)話框,讓用戶選擇Src文件路徑,進(jìn)行文件移入操作。在通信組對(duì)象添加成員時(shí),如果該成員所對(duì)應(yīng)的節(jié)點(diǎn)對(duì)象不存在,則系統(tǒng)自動(dòng)創(chuàng)建一個(gè)對(duì)應(yīng)的動(dòng)態(tài)節(jié)點(diǎn)對(duì)象。靜態(tài)節(jié)點(diǎn)對(duì)象:創(chuàng)建靜態(tài)節(jié)點(diǎn)對(duì)象使用PG_ADD_PEER_Static選項(xiàng)。在實(shí)際使用中不需要直接創(chuàng)建登錄服務(wù)器節(jié)點(diǎn)對(duì)象,而是在控件初始化時(shí),由系統(tǒng)自動(dòng)創(chuàng)建。PG_CLASS_File:64。// Name參數(shù)指定登錄服務(wù)器節(jié)點(diǎn)對(duì)象的名稱,Addr參數(shù)指定登錄服務(wù)器節(jié)點(diǎn)的地址。 = pgOnExtRequest。在一個(gè)節(jié)點(diǎn)上只能有一個(gè)節(jié)點(diǎn)自身對(duì)象,如果創(chuàng)建第二個(gè),則前面一個(gè)自動(dòng)銷毀。 // 作為登錄服務(wù)器節(jié)點(diǎn)// Name參數(shù)指定節(jié)點(diǎn)自身對(duì)象的名稱,Addr參數(shù)指定節(jié)點(diǎn)的地址。 = pgOnReply。var uErr = (“PGServer”, 32, Data, Login)。 = “Type=1”。 = pgOnReply。var sInEle = “(Addr){“ + sRemoteAddr + “}(Proxy){}”。// 回調(diào)函數(shù)。 // 顯示接收到的“Hello!”消息 }}function pgOnReply(sObj, uErr, sData, sParam) {}/script但是,這個(gè)程序在實(shí)際中很難使用,因?yàn)橐孪戎缹?duì)端節(jié)點(diǎn)的網(wǎng)絡(luò)地址。Peergine提供了一種特殊的通信節(jié)點(diǎn)(登錄服務(wù)器節(jié)點(diǎn)),用來(lái)完成地址解析功能。(3) 協(xié)助普通節(jié)點(diǎn)處理NAT穿越和中繼隧道類型的協(xié)商。注:PG_METH_PEER_Login和PG_METH_PEER_Logout方法只能在登錄服務(wù)器節(jié)點(diǎn)對(duì)象上調(diào)用,在其他節(jié)點(diǎn)對(duì)象上調(diào)用這兩個(gè)方法將返回失敗。6) 數(shù)據(jù)的簽名和校驗(yàn)調(diào)用節(jié)點(diǎn)類的PG_METH_PEER_DigGen方法產(chǎn)生數(shù)據(jù)的簽名,調(diào)用節(jié)點(diǎn)類的PG_METH_PEER_DigVerify方法校驗(yàn)數(shù)據(jù)的簽名。在節(jié)點(diǎn)NodeA上給Group0添加成員“NodeA”、“NodeB”和“NodeC”,則節(jié)點(diǎn)NodeA上的Group0會(huì)與節(jié)點(diǎn)NodeB和NodeC上的Group0建立同步,同時(shí)節(jié)點(diǎn)NodeA上的Group0的成員列表也復(fù)制到節(jié)點(diǎn)NodeB和NodeC上的Group0,使節(jié)點(diǎn)NodeB和NodeC上的Group0都包含成員“NodeA”、“NodeB”和“NodeC”。當(dāng)它的成員發(fā)生變化時(shí),會(huì)實(shí)時(shí)地通知給引用它的同名通信組對(duì)象。節(jié)點(diǎn)NodeB和NodeC上的Group0在創(chuàng)建時(shí)指定關(guān)聯(lián)了節(jié)點(diǎn)NodeA,那么節(jié)點(diǎn)NodeB和NodeC就加入了節(jié)點(diǎn)NodeA上的Group0的成員列表,同時(shí)節(jié)點(diǎn)NodeA上的Group0的成員列表也復(fù)制到節(jié)點(diǎn)NodeB和NodeC上的Group0。(“Group0”, “PG_CLASS_Group”, “NodeA”, 0)。使能了鄰近節(jié)點(diǎn)控制功能通信組對(duì)象只把在鄰近范圍內(nèi)的成員復(fù)制到引用它的通信組對(duì)象。同樣,節(jié)點(diǎn)NodeA上的Group0給節(jié)點(diǎn)NodeC上的Group0復(fù)制了離節(jié)點(diǎn)NodeC最近的6個(gè)成員。通信組對(duì)象啟用了PG_ADD_GROUP_Master選項(xiàng)后才可以使用主成員控制功能。調(diào)用PG_METH_DATA_Message方法可以給所關(guān)聯(lián)的通信組成員的發(fā)送單向的消息,消息的內(nèi)容完全由應(yīng)用程序決定,控件透明傳輸。方法PG_METH_FILE_Status上報(bào)文件傳輸?shù)臓顟B(tài)。6. 使用音頻傳輸類(PG_CLASS_Audio)1) 兩點(diǎn)模式音頻傳輸類有兩種模式:兩點(diǎn)模式和會(huì)議模式,缺省為兩點(diǎn)模式。所以,為了使通信范圍更加準(zhǔn)確,建議音頻傳輸對(duì)象關(guān)聯(lián)節(jié)點(diǎn)對(duì)象作為對(duì)端節(jié)點(diǎn),或者關(guān)聯(lián)的通信組對(duì)象始終保持只有1個(gè)成員作為對(duì)端節(jié)點(diǎn)。3) 設(shè)置和獲取音量調(diào)用PG_METH_AUDIO_CtrlVolume方法可設(shè)置和獲取麥克風(fēng)和揚(yáng)聲器的音量。5) 音頻錄制調(diào)用PG_METH_AUDIO_Record方法可將音頻輸出錄制到由Path參數(shù)指定的AVI文件中。7. 使用視頻傳輸類(PG_CLASS_Video)1) 預(yù)覽模式視頻傳輸類有三種模式:預(yù)覽模式、兩點(diǎn)模式和會(huì)議模式。一端發(fā)起請(qǐng)求之后,另一端可以選擇接受或拒絕,只有對(duì)端選擇接受后通話才建立。3) 會(huì)議模式及視頻的加入和離開(kāi)會(huì)議模式用PG_ADD_VIDEO_Conference選項(xiàng)開(kāi)啟。調(diào)用此方法時(shí),如果只是改變了參數(shù)中的坐標(biāo)參數(shù),則調(diào)整視頻在窗口中的顯示位置和尺寸。6) 視頻錄制調(diào)用PG_METH_VIDEO_Record方法可將視頻輸出錄制到由Path參數(shù)指定的AVI文件中。8. 使用白板共享類(PG_CLASS_Board)1) 設(shè)置繪制圖形的參數(shù)調(diào)用PG_METH_BOARD_Shape方法可設(shè)置繪圖的參數(shù),包括圖案類型、線條寬度、線條顏色和線條樣式。設(shè)置線條的顏色與背景顏色相同、設(shè)置較寬的線條寬度、設(shè)置橡皮形狀的鼠標(biāo)光標(biāo),繪制這樣的線條時(shí)就等同于橡皮的效果。9. 使用文件分塊共享類(PG_CLASS_Share)1) 順序傳輸模式順序傳輸模式是缺省的傳輸模式。2) 分散傳輸模式分散傳輸模式用PG_ADD_SHARE_Distribute選項(xiàng)開(kāi)啟。如果文件不存在,則系統(tǒng)創(chuàng)建兩個(gè)文件分別用來(lái)存儲(chǔ)文件數(shù)據(jù)塊和傳輸?shù)臓顟B(tài)。某個(gè)節(jié)點(diǎn)獲取到所有的文件數(shù)據(jù)塊后,作為種子給其他節(jié)點(diǎn)繼續(xù)共享文件。調(diào)用PG_METH_SHARE_Open方法打開(kāi)文件分塊共享對(duì)象時(shí),如果指定了HttpURL參數(shù),則該文件分塊共享對(duì)象在本地HTTP服務(wù)器上建立一個(gè)轉(zhuǎn)發(fā)關(guān)聯(lián)。使用順序傳輸模式獲取媒體流文件并實(shí)時(shí)轉(zhuǎn)發(fā)到本地HTTP服務(wù)器上,然后使用具有網(wǎng)絡(luò)播放功能的播放器播放該媒體流文件的URL。調(diào)用PG_METH_TABLE_Query方法查詢或同步到來(lái)自其他節(jié)點(diǎn)的數(shù)據(jù)變更時(shí),系統(tǒng)調(diào)用PG_METH_TABLE_Report方法上報(bào)給應(yīng)用程序。請(qǐng)參考“說(shuō)明:文件傳輸模式”章節(jié)。在直播通信組中只能由一個(gè)節(jié)點(diǎn)作為源節(jié)點(diǎn)播放媒體流,其他節(jié)點(diǎn)都是收看節(jié)點(diǎn)。2) 媒體源的切換媒體流直播過(guò)程中有時(shí)需要切換到新的媒體源,恰當(dāng)?shù)牟僮髂苁骨袚Q過(guò)程平滑,產(chǎn)生的停頓較短。這樣情況時(shí),可先在新的源節(jié)點(diǎn)上調(diào)用PG_METH_LIVE_Open打開(kāi)媒體流,但不要執(zhí)行PG_LIVE_CTRL_Play動(dòng)作。如果調(diào)用時(shí)指定Path參數(shù)為空,則停止當(dāng)前正在進(jìn)行的錄制操作。參數(shù):Type:用bit位或操作組合多個(gè)值可以同時(shí)使能多種功能。0為禁用,1為啟用。參數(shù):Type:節(jié)點(diǎn)類型。如果不指定某個(gè)參數(shù)的值,則使用系統(tǒng)的缺省值。參數(shù):Name: 本地Peer對(duì)象的名稱。只有無(wú)法根據(jù)服務(wù)器地址選擇本地地址時(shí),才會(huì)使用指定的本地地址。參數(shù):Name: 服務(wù)器Peer對(duì)象的名稱。0為明文方式,1為摘要方式。Digest=1”。0為TCP隧道,1為HTTP隧道,2為WebSocket隧道(未支持)Load:中繼服務(wù)器的負(fù)荷Addr:中繼服務(wù)器的偵聽(tīng)地址示例(JavaScript):// 指定2個(gè)隧道參數(shù)。本配置項(xiàng)的格式為“類名稱:類的最大實(shí)例數(shù)”,可以同時(shí)配置多個(gè)類,用分號(hào)“。=“PG_CLASS_Data:8。7) OnExtRequest描述:指定一個(gè)處理請(qǐng)求的回調(diào)函數(shù)。sPeer: [字符串] 發(fā)出請(qǐng)求的對(duì)等節(jié)點(diǎn)返回值:[整型] 1: 異步處理,0: 成功,0: 失敗的錯(cuò)誤碼。 return 1。原型:int OnReply(sObject, uErr, sOut, sParam)參數(shù):sObject:[字符串] 對(duì)象名稱uErr:[整型] 錯(cuò)誤碼sOut:[字符串] 應(yīng)答的輸出參數(shù),OML格式sParam:[字符串] 用戶參數(shù),就是在ObjectRequest()函數(shù)調(diào)用時(shí)輸入的sParam參數(shù)。2. 控件的節(jié)點(diǎn)功能函數(shù):1) int ObjectAdd(sObject, sClass, sGroup, uFlag)描述:增加一個(gè)對(duì)象。sGroup:[字符串] 該對(duì)象關(guān)聯(lián)的組。返回值:[整型] 1: 成功,0: 失敗。2) void ObjectDelete(sObject)描述:刪除一個(gè)對(duì)象。示例(JavaScript):// 獲取名為“OnlineGroup”的對(duì)象的類型var sClass = (“OnlineGroup”)。當(dāng)此參數(shù)為空時(shí),刪除之前關(guān)聯(lián)的組。參數(shù):sObject:[字符串] 對(duì)象的名稱返回值:[字符串] 該對(duì)象的組。如果此參數(shù)為空,則與通信范圍內(nèi)的所有節(jié)點(diǎn)都進(jìn)行同步。(“OnlineGroup”, “Server”, 1)。sParam:[字符串] 用戶定義參數(shù),在OnReply()回調(diào)函數(shù)中原樣返回。示例(JavaScript):// 給“Server”節(jié)點(diǎn)發(fā)送一個(gè)RPC請(qǐng)求。sOut:[字符串] 應(yīng)答的輸出參數(shù)uHandle:[整型] 請(qǐng)求句柄,由OnExtRequest()函數(shù)輸入的uHandle參數(shù)。9) int PumpMessage(uLoop)描述:處理控件的消息循環(huán)。參數(shù):uLoop:[整型] 0:每處理完一個(gè)消息后,該函數(shù)返回;1:該函數(shù)循環(huán)處理消息,直到進(jìn)程退出前才返回。返回值:[整型] 0: 成功,0: 失敗的錯(cuò)誤碼。參數(shù):sEle:[字符串] 需要編碼的字符串返回值:[字符串] 編碼后的字符串。示例(JavaScript):var sDecEle = (“abcamp。3) String omlSetName(sEle, sPath, sName)描述:設(shè)置一個(gè)OML元素的名稱。示例(JavaScript):var sEle = “(Name0)[Class0]{aaaaa}(Name1)[Class0]{bbbb}”。返回值:[字符串] 設(shè)置元素類型后的整個(gè)OML字符串。不需要對(duì)此參數(shù)進(jìn)行OML編碼。6) String omlNewEle(sName, sClass, sContent)描述:生成一個(gè)OML元素字符串參數(shù):sName:元素的名稱。sContent:元素的內(nèi)容。7) String omlGetEle(sEle, sPath, uSize, uPos)描述:從一個(gè)OML字符串中獲取指定的OML元素參數(shù):sEle:OML字符串sPath:要獲取的元素在整個(gè)OML字符串的路徑uSize:獲取OML元素的個(gè)數(shù)uPos:獲取OML元素的起始位置返回值:[字符串] 獲取到的OML元素
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1