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

正文內(nèi)容

p2psdk開發(fā)包與無關(guān)性協(xié)議傳輸-wenkub

2023-05-29 04:43:17 本頁面
 

【正文】 NDOWS消息或回調(diào)函數(shù)的方式通知接收方,使整個的開發(fā)過程變得更加簡單和模塊化。支持重定向?! ? 。(用戶在幾個人的小范圍內(nèi)進行的傳播,應(yīng)該不在考慮范圍之內(nèi),而且也根本就不可能完全地控制住?! ? 為將來的應(yīng)用增加了可擴展性,從數(shù)字標(biāo)識到正確的本地文件的轉(zhuǎn)換過程,提供了一種方便地擴展手段,以什么方式來設(shè)定權(quán)限、如何校驗權(quán)限、是否使用權(quán)限、以及對不同文件采取不同加密手段等都可以在這個轉(zhuǎn)換過程中根據(jù)具體情況來定義?! ?shù)字標(biāo)識的引入為安全性和擴展性帶來了很多的好處:  1 用戶不必再設(shè)定某一個共享目錄,文件可以散布在本地機器的任何一個目錄下,而不用擔(dān)心安全性?! ?、黃色信息、無用的垃圾信息大量泛濫的一種方法,讓P2P的使用更加規(guī)范,使個人用戶的行為更加具有針對性和目的性。  ,任何一個開發(fā)者都可以制定自己的協(xié)議標(biāo)準(zhǔn)去完成一個任務(wù),而不需要去關(guān)心其它的應(yīng)用程序。它類似于XML、HTTP、SOAP等協(xié)義,但有其獨特的特點,關(guān)于這種新的無關(guān)性協(xié)議傳輸?shù)目尚行詫⒃诤竺嬲撌觥? 二  SDK開發(fā)包  ,它使用對象的傳遞來實現(xiàn)無關(guān)性協(xié)議傳輸,這種對象并不是MFC或JAVA的序列化對象,使開發(fā)者可以在互相不知道傳送協(xié)議的情況下,互傳消息,并且可以根據(jù)開發(fā)者的定義,在不同的編程語言環(huán)境中互傳對象。它將TCP的流式數(shù)據(jù)轉(zhuǎn)變成一個個事務(wù)來對待,每一個事務(wù)表明你希望通過P2P來實現(xiàn)的功能,事務(wù)的處理過程可以使用DLL、OCX或COM等任何一種形式封裝起來,這些被封裝的事務(wù)可以由其它開發(fā)者直接在自己的開發(fā)程序中引用,而不需要再為處理相同的事務(wù)去開發(fā)一套程序。   。對于想通過P2P來實現(xiàn)的功能,只需要加入一個已經(jīng)定義好的類就可以啦,如果想在其它開發(fā)者開發(fā)的事務(wù)處理程序基礎(chǔ)之上去增加一些功能,甚至可以從其他開發(fā)者已經(jīng)定義好的類中派生出新的本地類來實現(xiàn)自己的獨特功能,而發(fā)送指令對象的雙方卻都可以正確地解析,并且可以在雙方的處理過程中,都引入自己獨特的本地處理方式。從開發(fā)JAVA版的P2P程序開始,我就始終認為P2P應(yīng)該對下載的文件設(shè)定一種權(quán)限,用戶通過權(quán)限可以控制自己所提供的文件可以被哪一些人下載,這種想法也影響到了我開發(fā)C++。  2 避免了垃圾文件的出現(xiàn),設(shè)定共享目錄時,用戶常常將一大堆文件拷貝到目錄下,結(jié)果檢索出來的經(jīng)常是一大堆垃圾。   通過以上方法,只能防止文件的泛濫傳播,還不能有效地控制黃色信息。)  ,提出了一種“全球服務(wù)器統(tǒng)一資源分配”策略,這種方式,對服務(wù)器的負擔(dān)非常輕,可以由任意多個服務(wù)器提供商去獨立地創(chuàng)建自己的用戶群,建立自己的用戶檔案庫,彼此間不需要頻繁交換信息,也不需要彼此共享用戶資源,更用不著建立中心數(shù)據(jù)庫,但是在任何一臺服務(wù)器上登錄的用戶彼此間卻可以互相通訊,可以不通過服務(wù)器而建立連接。只需要給出連接方的IP地址、監(jiān)聽端口號和想傳送(或下載)的文件的數(shù)字標(biāo)識號,、斷點續(xù)傳的方式實現(xiàn)文件的傳送與接收過程?! ? ,只需簡單地調(diào)用幾個靜態(tài)函數(shù),就可以輕易地啟動、暫停、關(guān)閉聲音捕捉(錄音)和聲音回放(放音),并初步實現(xiàn)了靜音過濾?! ? ,它比MFC的序列化對象更加簡單、易用,允許在修改對象屬性后,重復(fù)發(fā)送對象,而且能夠在無法實別所傳送的類對象時,自動還原成與該類最接近的一個基類的對象。  8 ,只不過是界面上的不同,那你就錯啦。其它的開發(fā)者可以在自己的程序中直接引用這個DLL,來完成由其它開發(fā)者預(yù)先定義好的功能。當(dāng)其他開發(fā)者要使用你的DLL時,只需要增加你提供的鉤子函數(shù)即可。 四   ,要想正確地使用這個DLL。   PPQ的整個連接過程是建立在一種信任的基礎(chǔ)之上的。這種信任關(guān)系的表現(xiàn)的實體,就是PFriend類。希望互相連接的雙方,彼此都必需包括有對方的PFriend對象,否則連接是無法被建立的?! BaseAct是所有可以轉(zhuǎn)變?yōu)閿?shù)據(jù)流進行傳輸?shù)闹噶顚ο蟮幕?,開發(fā)者需要自定義傳輸對象時,都需要從該類來派生出新的類?! Task類描述并記錄了一個或一組具有相同連接類型的連接,它表明了要進行的一個任務(wù)。終結(jié)符的二進制的流緩沖?! ?chuàng)建PBaseAct派生類其實很簡單,按照以下步驟,你就可以輕松地創(chuàng)建出自己的派生類。  2 在派生類中重載CountSerializeLength()方法。  6 實現(xiàn)GOCALLBACK鉤子函數(shù),返回自定義對象的一個實例。    關(guān)于GETCALLBACK回調(diào)函數(shù)和PMSGINFO結(jié)構(gòu)的定義和實現(xiàn)方法?!   ∪绻麅蓚€函數(shù)都重載了,將優(yōu)先處理回調(diào)函數(shù)。  1 初始化PDefine::rSMsgInfo結(jié)構(gòu)。  5 為以下消息創(chuàng)建響應(yīng)函數(shù):    OMSG_CREATE_NEW_OBJ,    OMSG_CREATE_NEW_TASK,    OMSG_ALL_CONNECT_END,    OMSG_MISSION_END  6 調(diào)用PDefine::SInitSocketStream()方法初始化Win Socket,使創(chuàng)建SOCKET連接成為可能。 七 從URL下載一個文件  最簡單的任務(wù)就是從URL下載一個文件。  2 初始化結(jié)構(gòu),這步是必需的,每創(chuàng)建一個PRECVINFO結(jié)構(gòu),就應(yīng)該調(diào)用以下的方法初始化結(jié)構(gòu)?!   prInfostrSrvURL =?!   Task* pTask=new PTask()?!   Taskm_lprRecvInfo=lprInfo。任務(wù)結(jié)束后,窗體也會接收到消息以表明當(dāng)前任務(wù)是否已經(jīng)完成?! ? 開始一個聊天任務(wù),其中thism_pFriend是一個已經(jīng)創(chuàng)建好的PFriend對象?! ? 啟動聲音播放設(shè)備    PDefine::SPlaySound()。    PDefine::SCreateSoundCaptureBuffer(NULL)?!   Define::SRecordSound()?!  ? 九 從另一個好友處下載一個文件  通過在2個客戶端之間建立一個連接,來完成指定文件的傳送與接收,是P2P的基本功能。lprInfonPort)(DWORD)lprInfo)?!     Taskm_lprRecvInfo=lprInfo?! ? 開始一個通過TCP來接收文件的任務(wù)。都遵循著這樣一個原則:先償試連接,等到連接被建立后才啟動新的線程,等到開始傳送有效數(shù)據(jù)后,才會去償試進行下一個連接,以避免很多無效的線程被啟動?! CP采用的是一種流式的數(shù)據(jù)傳送方式,因此對于接收方來講,在接收有效數(shù)據(jù)之前,必需明確地接收一些數(shù)據(jù),來表明其后的有效數(shù)據(jù)所表示的意義,這里暫且把表明其后有效數(shù)據(jù)意義的數(shù)據(jù),稱作指令,把指令后所傳送的有效數(shù)據(jù)稱為值,可以看出,實際的流式數(shù)據(jù)是由指令和值來構(gòu)成的。重復(fù)出現(xiàn)的一個或一組指令對象可以明確地表明希望接收方去完成某一種操作,這些指令對象和要完成的操作一起構(gòu)成了一個事務(wù),所以TCP的應(yīng)用實際是一種基于事務(wù)的處理。為了將傳送數(shù)據(jù)以二進制字節(jié)方式來傳送,在序列化對象時,將對象轉(zhuǎn)變成二進制流來傳送,在反序列化時,直接將二進制流拷貝到對象相應(yīng)的屬性的緩沖區(qū)中,而不再以字符串的形式來出現(xiàn),避開了不同平臺對字符編碼的問題。   ,它采用插件的形式,支持外部掛接任意多組指令對象,但是哪一些指令對象是開發(fā)者需要的,卻是由開發(fā)者自己來定義的。   。HTTP信息頭對于不同的服務(wù)器來講,它是允許擴充的,可以加入一些對于該服務(wù)器能夠解析的其它標(biāo)志,來指示服務(wù)器采取一些特定動作,這實際是對原基準(zhǔn)類的一個擴充,相當(dāng)于原基準(zhǔn)類的一個派生類。每一個接收方都必需去實現(xiàn)這個過程,當(dāng)然我們可以使用XML語法解析器將XML造型成對象來處理?! 倪@里面,我們可以看出這樣一個問題,接收方必需知道鍵的正確含義,否則它無法得到該鍵所表示的值。每一個XML的語法都可以作為一個指令類或一個指令類的派生類,而XML的屬性相當(dāng)于類中的一個屬性,它只把類作為一個整體來傳遞,而類對象的解析過程是由類自己來定義的,因此,它仍然能夠被完整地解析出來。   HTTP和XML等協(xié)義仍然需要一定的語法規(guī)則,在書寫時也必需按照該規(guī)則來書寫,它沒有任何的語法規(guī)則來限制。   傳輸指令對象的好處是很多的,無法在這里一一例舉出來,它是對傳統(tǒng)標(biāo)準(zhǔn)制定方式的一種挑戰(zhàn),使用這種方式,使所有的開發(fā)者都可以參與到標(biāo)準(zhǔn)的制定過程中,而且這種標(biāo)準(zhǔn)就象滾雪球一樣,會在自然地使用過程中變得越來越龐大,越來越規(guī)范,越來越充實,每一個開發(fā)者都不必再從最底層作起,他們可以從前人的基礎(chǔ)之上直接繼承或派生出新的應(yīng)用,以最快地速度開發(fā)出自己的程序。 通過這個函數(shù)將得到用戶自定義的PBaseAct派生類的一個實例。這樣其他開發(fā)者在設(shè)置鉤子函數(shù)時,才能夠根據(jù)自己的 需要來決定應(yīng)該使用哪些類。 } else if(memcmp(lpszClassID,A9BEDC367E1311D09B4700C04FC2F51D,PPQ_CLASS_ID_LEN)==0) { //加入對其他用戶創(chuàng)建的對象的支持。 DLL通過以下兩種方法來防止這種惡意攻擊行為: 1 當(dāng)雙方建立連接的時候,都必需通過一個身份驗證的過程,這個過程中雙方傳遞的 的指令對象是內(nèi)部定義好的指令對象,而且整個過程是外部不可干預(yù)的,只有通過 身份驗證的雙方才會建立起連接,也就是說,建立連接的雙方都是相互信任的。** 說明:* 根據(jù)傳遞的好友ID返回指向具有該ID的PFriend對象的指針。** 返回值:* 無。 可以在這個回調(diào)函數(shù)中對文件編號進行校驗,決定好友是否有權(quán)得到該文件。 下面是一種建立數(shù)字標(biāo)識與實際文件名的對應(yīng)關(guān)系的方式: 采用數(shù)據(jù)庫中記錄的存儲方式來保存每一個數(shù)字標(biāo)識與實際文件名的對應(yīng)關(guān)系,每 一個數(shù)字標(biāo)識與實際文件名的對應(yīng)關(guān)系相當(dāng)于一條記錄,數(shù)據(jù)被集中保存在一個文 件中,每一個記錄均是定長的,48個字節(jié)。 這樣所表示的數(shù)字標(biāo)識的最大序號可以達到4G(采用多文件保存),對于所表示的文件 個數(shù)來講,應(yīng)該是足夠啦,因為序號并不是遞增的,任何一個中間被刪除的記錄,在 下一次插入新記錄時,就會被分配這個序號。** 參數(shù):* LPARAM lParam 指向PBaseAct派生類的一個對象的指針。 建議使用消息來代替該回調(diào)函數(shù)。 //在下面對該接收到的該指令進行處理。 delete pa。 這種類型的函數(shù)的指針被賦與PTask對象中的m_pCallBackFun變量。** 如果想繼續(xù)使用該對象,則先調(diào)用InitValue()方法,InitValue()不會改變原有的賦值。如果你在delete這個對象這前,不希望 刪除PRECVINFO結(jié)構(gòu),你可以保存該指向該結(jié)構(gòu)的指針,然后設(shè)定m_lprRecvInfo=NULL。*** * * * * * * * * * * * ** * * * * * * * * * * * ** 消息名稱: OMSG_ALL_CONNECT_END** 類型: 必需響應(yīng)的消息。*** * * * * * * * * * * * ** 消息名稱: OMSG_CREATE_NEW_OBJ** 類型: 必需響應(yīng)的消息。*** * * * * * * * * * * * ** 消息名稱: OMSG_CREATE_NEW_TASK** 類型: 必需響應(yīng)的消息。而且你還需要去判斷對象的類型, 如果類型為TASK_TCP_RECV,則要在堆里去創(chuàng)建一個PRECVINFO對象,并且初始化這個 PRECVINFO結(jié)構(gòu),并將指針賦與PTasklprRecvInfo變量。** 參數(shù):* WPARAM wParam 表明了任務(wù)的完成狀態(tài)。*** * * * * * * * * * * * ** 消息名稱: OMSG_NEW_TCP_CONNECTED** 類型: 必需響應(yīng)的消息。關(guān)于該Socket的所有操作,將轉(zhuǎn)移給DLL外部處理。** 參數(shù):* WPARAM wParam 已經(jīng)建立好TCP連接的SOCKET句柄* LPARAM lParam 指向建立連接的PFriend對象的指針** 說明:* 一個請求的類型為TASK_TCP的TCP連接已經(jīng)被成功的建立。*** * * * * * * * * * * * ** 消息名稱: OMSG_TCP_USER_APPLY_CONNECTED** 類型: 如果使用了TASK_TCP_USER類型的連接,必需響應(yīng)該消息。 類型為TASK_TCP_USER,表示對方?jīng)]有使用或不確定使用了這個DLL。** 參數(shù):* WPARAM wParam
點擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1