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

正文內(nèi)容

peergine編程手冊(編輯修改稿)

2025-07-26 08:26 本頁面
 

【文章內(nèi)容簡介】 器獲取該節(jié)點的地址,并配置該動態(tài)節(jié)點對象的網(wǎng)絡(luò)資源。靜態(tài)節(jié)點對象:創(chuàng)建靜態(tài)節(jié)點對象使用PG_ADD_PEER_Static選項。靜態(tài)節(jié)點對象不會從登錄服務(wù)器獲取地址,需要調(diào)用PG_METH_PEER_SetAddr方法來設(shè)置地址。登錄服務(wù)器節(jié)點對象:創(chuàng)建登錄服務(wù)器節(jié)點對象使用PG_ADD_PEER_Server選項。在一個節(jié)點上只能有一個登錄服務(wù)器節(jié)點對象,如果創(chuàng)建第二個,則前面一個自動銷毀。在實際使用中不需要直接創(chuàng)建登錄服務(wù)器節(jié)點對象,而是在控件初始化時,由系統(tǒng)自動創(chuàng)建。代碼示例(JavaScript): = Type=1。 = Type=0。 // 作為普通節(jié)點 = PG_CLASS_Data:8。PG_CLASS_File:64。PG_CLASS_Audio:8。PG_CLASS_Video:8。 = Addr=0:0:0::0:0。// Name參數(shù)指定登錄服務(wù)器節(jié)點對象的名稱,Addr參數(shù)指定登錄服務(wù)器節(jié)點的地址。 = Name=PGServer。Addr=0:0:0::1112:0。 = (Relay0){(Type){1}(Load){0}(Addr){FE800000:0:01B05996:42CFB70D:7777:0}}。 = pgOnExtRequest。 = pgOnReply。(0)。節(jié)點自身對象:創(chuàng)建登錄服務(wù)器節(jié)點對象使用PG_ADD_PEER_Self選項。在一個節(jié)點上只能有一個節(jié)點自身對象,如果創(chuàng)建第二個,則前面一個自動銷毀。在實際使用中不需要直接創(chuàng)建節(jié)點自身對象,而是在控件初始化或調(diào)用登錄方法時,有系統(tǒng)自動創(chuàng)建。節(jié)點作為登錄服務(wù)器節(jié)點(服務(wù)器端)時,在控件初始化時創(chuàng)建節(jié)點自身對象,代碼示例(JavaScript): = “Type=1”。 = “Type=1”。 // 作為登錄服務(wù)器節(jié)點// Name參數(shù)指定節(jié)點自身對象的名稱,Addr參數(shù)指定節(jié)點的地址。 = “Name= PGServer。Addr=0:0:0::1112:0”。 = pgOnExtRequest。 = pgOnReply。(0)。節(jié)點作為普通節(jié)點(客戶端)時,在調(diào)用登錄方法時創(chuàng)建節(jié)點自身對象,代碼示例(JavaScript):// User參數(shù)指定節(jié)點自身對象的名稱,節(jié)點的地址由系統(tǒng)自動分配。var sData = (User){UserName000}(Pass){}(Param){}。var uErr = (“PGServer”, 32, Data, Login)。2) 簡單的兩點直接通信為了便于開始理解節(jié)點對象,我們編寫一個兩點直接通信的程序。代碼示例(JavaScript):object id=pgAtx classid=clsid:FFC9369FA8D945988E22ED07C7628BFC width=0 height=0/objectscript language=javascript// 初始化控件實例。 = “Type=1”。 = “Type=1”。 = “Name=” + sLocalName + “。Addr=” + sLocalAddr。 = pgOnExtRequest。 = pgOnReply。(0)。// 創(chuàng)建對端節(jié)點對象,并設(shè)置地址。(sRemoteName, “PG_CLASS_Peer”, “”, 0x4)。var sInEle = “(Addr){“ + sRemoteAddr + “}(Proxy){}”。(sRemoteName, 37, sInEle, “SetAddr”)。// 給對端節(jié)點發(fā)送消息“Hello!”。(sRemoteName, 36, “Hello!”, “SendMsg”)。// 回調(diào)函數(shù)。function pgOnExtRequest(sObj, uMeth, sData, uHandle, sPeer) { if (sObj == sLocalName amp。amp。 uMeth == 36) { alert(sData)。 // 顯示接收到的“Hello!”消息 }}function pgOnReply(sObj, uErr, sData, sParam) {}/script但是,這個程序在實際中很難使用,因為要事先知道對端節(jié)點的網(wǎng)絡(luò)地址。對此,Peergine提供了自動交換節(jié)點網(wǎng)絡(luò)地址的方法,請看參考下文的“登錄、注銷和地址解析”章節(jié)。3) 登錄、注銷和地址解析在Peergine系統(tǒng)中,通信節(jié)點是用節(jié)點對象的名稱來標識的,但在通信過程中需要根據(jù)節(jié)點的網(wǎng)絡(luò)地址來傳輸報文。所以,需要一種機制把節(jié)點對象名稱轉(zhuǎn)換成節(jié)點的網(wǎng)絡(luò)地址(也稱為地址解析)。Peergine提供了一種特殊的通信節(jié)點(登錄服務(wù)器節(jié)點),用來完成地址解析功能。在控件初始化時,把Node配置項的Type參數(shù)賦值為1,則該節(jié)點就是登錄服務(wù)器節(jié)點。登錄服務(wù)器節(jié)點比普通節(jié)點增加了以下幾點功能:(1) 接受其他普通節(jié)點的登錄、驗證賬號和記錄登錄狀態(tài)。(2) 處理其他普通節(jié)點的地址解析請求,返回指定節(jié)點的地址信息和登錄狀態(tài)。(3) 協(xié)助普通節(jié)點處理NAT穿越和中繼隧道類型的協(xié)商。普通節(jié)點通過調(diào)用登錄服務(wù)器節(jié)點對象的PG_METH_PEER_Login和PG_METH_PEER_Logout方法來請求登錄和注銷。當在普通節(jié)點上創(chuàng)建了一個新的節(jié)點對象時,控件會自行調(diào)用登錄服務(wù)器節(jié)點對象的PG_METH_PEER_Status方法來解析該節(jié)點的地址信息和登錄狀態(tài)。如果解析返回該節(jié)點已經(jīng)登錄,則與該節(jié)點建立通信會話。注:PG_METH_PEER_Login和PG_METH_PEER_Logout方法只能在登錄服務(wù)器節(jié)點對象上調(diào)用,在其他節(jié)點對象上調(diào)用這兩個方法將返回失敗。4) 遠程過程調(diào)用調(diào)用節(jié)點類的PG_METH_PEER_Call方法可進行兩個節(jié)點之間的遠程過程調(diào)用,該方法的請求參數(shù)和應(yīng)答參數(shù)的內(nèi)容由應(yīng)用程序定義,控件透明傳輸。5) 兩點消息傳輸調(diào)用節(jié)點類的PG_METH_PEER_Message方法可進行兩個節(jié)點之間的單向消息傳輸。該方法的請求參數(shù)的內(nèi)容由應(yīng)用程序定義,控件透明傳輸。6) 數(shù)據(jù)的簽名和校驗調(diào)用節(jié)點類的PG_METH_PEER_DigGen方法產(chǎn)生數(shù)據(jù)的簽名,調(diào)用節(jié)點類的PG_METH_PEER_DigVerify方法校驗數(shù)據(jù)的簽名。3. 使用通信組類(PG_CLASS_Group)1) 手動控制成員通過調(diào)用通信組類的PG_METH_GROUP_Modify方法來手動添加、刪除通信組的成員,必須啟用PG_ADD_GROUP_Modify選項后才允許調(diào)用該方法。通信組對象添加成員后,該通信組對象會與其成員所對應(yīng)的節(jié)點上的同名通信組對象建立同步,其成員列表也會復制到與其成員所對應(yīng)的節(jié)點上的同名通信組對象。舉例說明:有NodeA、NodeB和NodeC三個節(jié)點,它們都有通信組對象Group0,開始Group0的成員列表都是空的。在節(jié)點NodeA上給Group0添加成員“NodeA”、“NodeB”和“NodeC”,則節(jié)點NodeA上的Group0會與節(jié)點NodeB和NodeC上的Group0建立同步,同時節(jié)點NodeA上的Group0的成員列表也復制到節(jié)點NodeB和NodeC上的Group0,使節(jié)點NodeB和NodeC上的Group0都包含成員“NodeA”、“NodeB”和“NodeC”。當然節(jié)點NodeB和NodeC上的Group0都包含了對方節(jié)點作為成員后,它們之間也會建立同步。注:給通信組對象添加一個成員后,如果該成員名稱所對應(yīng)的節(jié)點對象還不存在,則系統(tǒng)會自動創(chuàng)建該節(jié)點對象。2) 自動控制成員Peergine還提供了一種自動控制通信組對象的成員的方法:(1) 當一個通信組對象啟用了PG_ADD_GROUP_Refered選項時,則允許其他同名通信組對象引用該通信組對象的成員,它的成員列表將自動復制到引用它的同名通信組對象。當它的成員發(fā)生變化時,會實時地通知給引用它的同名通信組對象。(2) 一個通信組對象引用了另一個通信組對象的成員時,它自身的節(jié)點也同時加入了被引用的通信組對象的成員列表。當它取消了引用或被刪除時,它自身的節(jié)點就離開了被引用的通信組對象的成員列表。舉例說明:有NodeA、NodeB和NodeC三個節(jié)點,它們都有通信組對象Group0,開始Group0的成員列表都是空的,其中節(jié)點NodeA啟用了PG_ADD_GROUP_Refered選項。節(jié)點NodeB和NodeC上的Group0在創(chuàng)建時指定關(guān)聯(lián)了節(jié)點NodeA,那么節(jié)點NodeB和NodeC就加入了節(jié)點NodeA上的Group0的成員列表,同時節(jié)點NodeA上的Group0的成員列表也復制到節(jié)點NodeB和NodeC上的Group0。如果節(jié)點NodeB上的Group0取消關(guān)聯(lián)節(jié)點NodeA或被刪除,則節(jié)點NodeB就離開了節(jié)點NodeA上的Group0的成員列表,同時節(jié)點NodeA上的Group0會通知節(jié)點NodeC上的Group0把節(jié)點NodeB從其成員列表中刪除。代碼示例(JavaScript):// 在節(jié)點NodeA上創(chuàng)建Group0,選項為PG_ADD_GROUP_Refered=0x4(“Group0”, “PG_CLASS_Group”, “”, 0x04)。// 在節(jié)點NodeB和NodeC上創(chuàng)建Group0,關(guān)聯(lián)節(jié)點NodeA。(“Group0”, “PG_CLASS_Group”, “NodeA”, 0)。3) 鄰近成員控制在對等通信場景中,有時候一個通信組內(nèi)的成員會很多,但一個節(jié)點只希望與離它最近的幾個節(jié)點交互。Peergine針對這種情況提供了一種鄰近節(jié)點控制的功能。一個通信組對象啟用了PG_ADD_GROUP_Refered選項作為成員引用對象,如果同時啟用了PG_ADD_GROUP_NearPeer選項,則它就使能了鄰近節(jié)點控制功能。使能了鄰近節(jié)點控制功能通信組對象只把在鄰近范圍內(nèi)的成員復制到引用它的通信組對象。鄰近范圍的大小缺省為6,可以通過PG_METH_COMMON_SetOption方法的修改。舉例說明:節(jié)點NodeA上的Group0已經(jīng)包含了很多成員,節(jié)點NodeB和NodeC是其中的兩個成員。那么,節(jié)點NodeA上的Group0給節(jié)點NodeB上的Group0復制了離節(jié)點NodeB最近的6個成員。同樣,節(jié)點NodeA上的Group0給節(jié)點NodeC上的Group0復制了離節(jié)點NodeC最近的6個成員。以此類推,每個成員節(jié)點上的Group0都復制到了離該節(jié)點最近的6個成員。4) 主成員控制在某些應(yīng)用場景中,一個通信組中需要有一個權(quán)限更高的成員來管理其他成員。Peergine針對這種情況提供了一種主成員控制功能。通信組對象啟用了PG_ADD_GROUP_Master選項后才可以使用主成員控制功能。通過調(diào)用PG_METH_GROUP_Master方法向通信組內(nèi)的成員公告主成員的名稱,成員接收到公告后,通過返回應(yīng)答的錯誤碼確認是否接受該主成員公告。 4. 使用消息傳輸類(PG_CLASS_Data)1) 多點消息傳輸節(jié)點類提供兩點之間消息傳輸功能。消息傳輸類提供多點之間的消息傳輸功能。調(diào)用PG_METH_DATA_Message方法可以給所關(guān)聯(lián)的通信組成員的發(fā)送單向的消息,消息的內(nèi)容完全由應(yīng)用程序決定,控件透明傳輸。參考“PG_CLASS_Data類”章節(jié)5. 使用文件傳輸類(PG_CLASS_File)1) 兩點文件傳輸文件傳輸類提供了兩點之間傳輸文件的功能。方法PG_METH_FILE_Put和PG_METH_FILE_Get分別為上傳和下傳文件。方法PG_METH_FILE_Cancel中斷一個正在進行的文件傳輸。方法PG_METH_FILE_Status上報文件傳輸?shù)臓顟B(tài)。開始傳輸時,可以通過Offset和Size參數(shù)指定只傳輸文件的一個片段。進行多次傳輸不同的片段可以組成一個斷點續(xù)傳的過程。參考“PG_CLASS_File類”章節(jié)。6. 使用音頻傳輸類(PG_CLASS_Audio)1) 兩點模式音頻傳輸類有兩種模式:兩點模式和會議模式,缺省為兩點模式。兩點模式允許經(jīng)過呼叫協(xié)商之后才建立通話,一端發(fā)起請求之后,另一端可以選擇接受或拒絕,只有對端選擇接受后通話才建立。發(fā)起端調(diào)用PG_METH_AUDIO_Open方法發(fā)起呼叫請求,對端接收到呼叫請求后,通過返回應(yīng)答的錯誤碼來確認接受或拒絕,錯誤碼等于0表示接受,錯誤碼大于0表示拒絕及其原因。兩點模式時,如果音頻傳輸對象關(guān)聯(lián)的通信組對象有多個成員,則系統(tǒng)選擇第1個成員作為對端節(jié)點。所以,為了使通信范圍更加準確,建議音頻傳輸對象關(guān)聯(lián)節(jié)點對象作為對端節(jié)點,或者關(guān)聯(lián)的通信組對象始終保持只有1個成員作為對端節(jié)點。2) 會議模式及發(fā)言控制通過PG_ADD_AUDIO_Conference選項開啟會議模式。會議模式下不需要呼叫過程,調(diào)用 PG_METH_AUDIO_Open方法打開對象之后就直接加入到會議中,可以跟通信組內(nèi)的所有節(jié)點通話。會議模式下可以調(diào)用PG_METH_AUDIO_Speech方法來控制指定節(jié)點的發(fā)言狀態(tài)。3) 設(shè)置和獲取音量調(diào)用PG_METH_AUDIO_CtrlVolume方法可設(shè)置和獲取麥克風和揚聲器的音量。4) 實時顯示音量的變化啟用了PG_ADD_AUDIO_ShowVolume選項后,系統(tǒng)會調(diào)用PG_METH_AUDIO_ShowVolume方法上報在麥克風輸入和揚聲器輸出的音頻信號的音量。上報的頻率為200毫秒1次,靜音不會上報。應(yīng)用程序可以依此在圖像界面上顯示輸入/輸出音量的變化。5) 音頻錄制調(diào)用PG_METH_AUDIO_Record方法可將音頻輸出錄制到由Path參數(shù)指定的AVI文件中。如果調(diào)用時指定Path參數(shù)為空,則停止當前正在進行的錄制操作。如果想將音頻和視頻錄
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1