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

正文內(nèi)容

基于visualc++的p2p文件傳輸系統(tǒng)的設(shè)計與實現(xiàn)(文件)

2024-12-30 02:23 上一頁面

下一頁面
 

【正文】 于 Napster 以及 ICQ 類軟件的出現(xiàn),雖然在Napster 之前 P2P 方式的研究也從未停止。當(dāng)然,在許多人的眼中, Napster 并不是純粹的 P2P,它仍然需要一個處于中心協(xié)調(diào)機制。 在國外, P2P 發(fā)展已經(jīng)如火如荼, Intel、 Sun、 Microsoft 等公司已經(jīng)在制定 P2P的標(biāo)準(zhǔn)。目前,國內(nèi) P2P 的應(yīng)用主要有兩個方向:文件共享及協(xié)同工作?;窘Y(jié)構(gòu)如圖 , 這個結(jié)構(gòu)存在于Inter 中計算機之中,它決定了計算機在網(wǎng)絡(luò)上的動作。 TCP 將它的信息送到更高層的應(yīng)用程 序,例如 Tel 的服務(wù)程序和客戶程序。 TCP 協(xié)議即采用流式套接字 SOCKET_STREAM。 欺騙 UDP 包比欺騙 TCP 包更容易,因為 UDP 沒有建立初始化連接(也可以稱為握手)(因為在兩個系統(tǒng)間沒有虛電路),也就是說,與 UDP 相關(guān)的服務(wù)面臨著更大的危險。 Datagram(UDP) Socket 雖然提供雙向的通信,但沒有可靠、有次序、不重復(fù)的保證,所以 UDP 傳送數(shù)據(jù)可能會收到無次序、重復(fù)的數(shù)據(jù),甚至數(shù)據(jù)在傳輸過程中出現(xiàn)遺漏。 結(jié)束進程:進程只是提 供了一段地址空間和內(nèi)核對象,其運行是通過在其地址空間內(nèi)的主線程來體現(xiàn)的。 Exit Process()函數(shù)即可在進程中的某個線程中使用,并將立即終止本進程的運行。另外, WinI 函數(shù)的調(diào)用形式與多數(shù) Win32 API 函數(shù)類似,也便于用戶掌握和使用。 通信原理及過程 大多數(shù)通過網(wǎng)絡(luò)進行通信的應(yīng)用程序,不論是通過因特網(wǎng)還是小型的辦公網(wǎng)絡(luò),它們都使用同樣的原則和功能來執(zhí) 行通信。你撥了電話號碼,并希望要找的那個人正在電話線的另一頭等接電話。正像兩個人打電話交談一樣,這個連接是一個雙向的通道,即雙方都可以發(fā)送消息。接收到的每一條消息都被復(fù)制到所有已收到的消息列表中?,F(xiàn)在的 Winsock已經(jīng)基本上實現(xiàn)了與協(xié) 議無關(guān),你可以使用 Winsock來調(diào)用多種協(xié)議的功能,但較常使用的是 TCPIP 協(xié)議。在程序中調(diào)用該函數(shù)的形式如下: WSAStartup((WORD)((181),( LPWSADATA) amp。 SOCKET PASCAL FAR socket( int af, int type, int protocol ) 參數(shù) af 目 前 只 提 供 PF_INET(AF_INET) ; type : Socket 的 類 型 (SOCK_STREAM、 SOCK_DGRAM); protocol:通訊協(xié)定 (如果使用者不指定則設(shè)為0); 如果要建立的是遵從 TCPIP協(xié)議的 socket,第二個參數(shù) type應(yīng)為 SOCK_STREAM,如為 UDP(數(shù)據(jù)報)的 socket,應(yīng)為 SOCK_DGRAM。此后可以調(diào)用 getsockname()函數(shù)來獲知其被設(shè)定的值。 int PASCAL FAR listen( SOCKET s, int backlog )。 int PASCAL FAR WSAAsyncSelect( SOCKET s, HWND hWnd,unsigned int wMsg, long lEvent )。為了使服務(wù)器端接受客戶端的連接請求,就要使用 accept() 函數(shù),該函數(shù)新建一 Socket 與客戶端的 Socket 相 通,原先監(jiān)聽之 Socket 繼續(xù)進入監(jiān)聽狀態(tài),等待他人的連接要求。 結(jié)束 socket 連接 結(jié)束服務(wù)器和客戶端的通信連接是很簡單的,這一過程可以由服務(wù) 器或客戶機的任一端啟動,只要調(diào)用 closesocket()就可以了,而要關(guān)閉 Server 端監(jiān)聽狀態(tài)的 socket,同樣也是利用此函數(shù)。 參數(shù): s: Socket 的識別碼; int PASCAL FAR WSACleanup( void )。 int PASCAL FAR connect( SOCKET s, const struct sockaddr FAR *name, int namelen )。參數(shù): s: Socket 的識別碼 buf:存放要傳送的資料的暫存區(qū); len buf:的長度;flags:此函數(shù)被調(diào) 用的方式。 通信過程 C/S 模式的請求響應(yīng)方式 圖 3. 1 TCP/IP 協(xié)議三次握手過程 在 TCP/IP 協(xié)議中, TCP 協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個連接(如圖 )。 傳輸文件過程 東南大學(xué)成賢學(xué)院 第 14 頁 共 44 頁 自己中斷 服務(wù)器 客戶端 向客戶端發(fā)送傳輸文件請求,等待 等待服務(wù)器的請求 自己中斷 開始傳輸文件進程進程 開始傳輸文件進程進程 SOCKET 建立連接并傳輸文件 SOCKET 建立連接并傳輸文件 過程中斷或?qū)Ψ降闹袛? 過程中斷或?qū)Ψ降闹袛? 傳輸完畢,結(jié)束進程 傳輸完畢,結(jié)束進程 關(guān)閉 連接,返回 關(guān)閉連接,返回 對方拒絕 對方拒絕 東南大學(xué)成賢學(xué)院 第 15 頁 共 44 頁 圖 3. 3 傳輸文件過程 首先服務(wù)器向客戶端發(fā)送請求,要求傳送文件,在得到客戶端相應(yīng)之前,雙方都可以取消這次傳輸,同時通知對方已經(jīng)取消連接;一旦客戶端給了服務(wù)器響應(yīng),則建立進程,進行傳輸;建立的進程里,要定義新的 SOCKET 套接字,以建立連接,在 傳輸過程中,同樣可以進行中斷,同時通知對方已經(jīng)取消連接;傳輸結(jié)束后,斷開連接,結(jié)束該進程。 控件 功能 ID 標(biāo)題 VALUE BUTTON1 連接到服務(wù)器 IDC_BUTTON1 CONNECT BUTTON2 停止與服務(wù)器連接 IDC_BUTTON2 STOP BUTTON3 發(fā)送消息 IDC_BUTTON3 SEND BUTTON4 托盤(縮放到右下角) IDC_BUTTON4 HIDE BUTTON5 接收文件 IDC_BUTTON5 RECEIVE BUTTON6 停止接受文件 IDC_BUTTON6 Stop BUTTON7 發(fā)送文件 IDC_BUTTON7 Transmisson BUTTON8 語音聊天 IDC_BUTTON8 PHONE 東南大學(xué)成賢學(xué)院 第 20 頁 共 44 頁 BUTTON10 設(shè)置字體大小 IDC_BUTTON10 FONT BUTTON11 清除編輯框內(nèi)紀(jì)錄 IDC_BUTTON11 clear PROGRESS1 發(fā)送文件進度 IDC_PROGRESS1 m_CtrlProgressSend LIST1 顯示消息 IDC_LIST1 m_ctrMesssage EDIT2 編輯要發(fā)送的消息 IDC_EDIT2 m_strMess 表 客戶端對話框上控件的作用 ③服務(wù)器登陸窗口(如圖 ): 圖 3. 11服務(wù)器登陸窗口 ④服務(wù)器操作界面(如圖 ): 東南大學(xué)成賢學(xué)院 第 21 頁 共 44 頁 圖 3. 12服務(wù)器操作界 面 服務(wù)器對話框上控件的功能如表 。指定類型為 void,函數(shù)聲明為 SetParent (CDialog* pWnd)。 virtual void OnReceive(int nErrorCode)。 連接應(yīng)用程序 客戶端與服務(wù)器的連接通過建立 SOCKET 套接字完成的,客戶端進行連接,服務(wù)器進程偵聽,如果在規(guī)定的時間內(nèi)連接不上,或是網(wǎng)絡(luò)問題,則系統(tǒng)自動退出,提示用戶有錯誤發(fā)生;一旦建立連接,就可以通 過以定義函數(shù)發(fā)送和接受消息,直到用戶退出。在 TCP/IP 協(xié)議的實現(xiàn)中,東南大學(xué)成賢學(xué)院 第 23 頁 共 44 頁 端口操作類似于一般的 I/O操作,進程獲取一個端口,相當(dāng)于獲取本地唯一的 I/O文件,可以用一般的讀寫原語訪問),客戶連接時也是通過這個指定的端口;當(dāng)服務(wù)器偵聽到客戶端的連接后,自動調(diào)用 OnAccept()函數(shù),表示已經(jīng)和客戶端去的連接,使對話框上各控件可以工作;同時定義局部變量 CString Cip 和 UINT CPort,調(diào)用庫函數(shù) GetPeerName()得到客戶端 IP 和端口,并且能夠在 STATIC2上顯示, GetDlgItem (IDC_STATIC2)SetWindowText(Cip)。在實際 Windows 網(wǎng)絡(luò)通信軟件開發(fā)中,異步非阻塞套接字是用的最多的。tm),格式設(shè)置為“年 /月 /日 時 /分 /秒” Format(%y/%m/%d %H:%M:%S ),然后在自己對話框上顯示已經(jīng)發(fā)送的消息;最后將記錄保存, fp=fopen(f:\\,ab+)。 ②接收 (這是本程序的一個關(guān)鍵部分,一些文件的傳輸狀態(tài)要靠這部分決定,但不是理想解決方案,主要是在傳輸文件時用到)。 服務(wù)器:在斷開連接前,向客戶端發(fā)送消息,能夠通知客戶端自己已停止工作 ,然后各按鈕 false。(在傳送線程函數(shù)里沒傳送 1k 的文件就會循環(huán)詢問一次 m_bSendEnd 是否為 true),故在確定 m_bSendEnd 為 true 后,向?qū)Ψ桨l(fā)東南大學(xué)成賢學(xué)院 第 25 頁 共 44 頁 送消息 發(fā)送端終止 ,然后結(jié)束退出; ( 4)在傳送過程中:如果對方中止,則會受到消息“客戶端接收終止”,則設(shè)置m_bRecEnd 為 TRUE,同樣的在傳送 線程函數(shù)里沒傳送 1k 的文件就會循環(huán)詢問一次m_bSendEnd 是否為 true,故在確定 m_bSendEnd 為 true 后,結(jié)束退出; 在沒有任何終止消息的情況下,調(diào)用函數(shù) AfxBeginThread創(chuàng)建線程,開始發(fā)送文件:首先調(diào)用 Open 函數(shù)打開要傳送的文件,然后創(chuàng)建 CSocket 類的對象 sockSrvr,開始另一個套接字,等待對方的連接;連接成功后,創(chuàng)建 SSFI 對象,來接收文件的信息, SSFI 結(jié)構(gòu)如下: typedef struct SSFI { //SOCKET_STREAM_FILE_INFO 獲取文件信息 TCHAR szFileTitle[128]。 //文件的最后訪問時間 FILETIME ftLastWriteTime。 //保留,為 0 DWORD dwReserved1。 ⑵ 在 m_rgn 內(nèi)顯示動態(tài)信息 —— GetRValue 可以得到屏幕像素的值,定義 CString 類的函數(shù) string,用來編輯可以顯示的內(nèi)容,最后由 SetWindowText 顯示在該區(qū)域內(nèi); 不足的地方是,目前還不能把截取的圖像直接顯示在編輯框。常見的WAVE 語音文件主要有兩種,分別對應(yīng)于單聲道( 采樣率、 8Bit 的采樣值)和雙聲道( 采樣率、 16Bit 的采樣值)。 要實現(xiàn)點對點語音通信,只要針對一個點實現(xiàn)話音的實時采集、處理、播放,同時能進行可靠的傳送和接收,這樣兩點一連便可通話。(本程序還沒有完全實現(xiàn)這個功能)。在客戶端,接收到“ J”后,做出判斷,知道收到了系統(tǒng)信息,然后根據(jù)信息里的。然后用 waveInOpen 函數(shù)打開錄音設(shè)備,以初始化WAVE 波形的頭信息, waveInPrepareHeader為錄音設(shè)備準(zhǔn)備緩存后, waveInAddBuffer/給 輸 入 設(shè) 備增 加 一 個緩 存 ,開 始 錄 音, 調(diào) 用 waveInStart 函 數(shù) , 開始Audio_Listen_CThread 和 Audio_Send_CThread 進程; ① Audio_Listen_CThread:聲音文件接受線程 先定義 CSocket 類的對象 m_Server,調(diào)用 Create, Listen,等待對方連接,連接成功后,開始循環(huán)接收聲音文件,首先接收文件長度,接下來開辟 length 長的內(nèi)存空間,內(nèi)存申請成功,可以進行循環(huán)檢測接受,每輪聲音文件接收完畢 后,都要檢查是否地址越界;接受完畢后,關(guān)閉 SOCKET 連接; ② Audio_Send_CThread:聲音文件發(fā)送線程 東南大學(xué)成賢學(xué)院 第 29 頁 共 44 頁 先定義 CSocket 類的對象 m_Client,調(diào)用 Connect 函數(shù),建立與對方的連接,循環(huán)檢測發(fā)送聲音文件,首先發(fā)送塊的長度,其次發(fā)送塊的內(nèi) 容;用 dwSent 表示已經(jīng)發(fā)送的字節(jié)數(shù),發(fā)送聲音文件開始,每輪聲音文件發(fā)送完畢后,都要檢查是否地址越界;接受完畢后,關(guān)閉 SOCKET 連接; 遠程控制 此功能類似于 的遠程協(xié)助,但有很大的局限性,僅能夠鎖定或解鎖對方鍵盤,鼠標(biāo),得到對方進程和殺死某個進程。當(dāng)應(yīng)用程序不斷向設(shè)備驅(qū)動程序提供音頻數(shù)據(jù)時,設(shè)備驅(qū)動過程控制音頻設(shè)備在后臺完成錄音和放音的具體操作,通過回調(diào)機制,我們又可以檢測到什么時候用完一個數(shù)據(jù)塊,并 及時傳送下一個數(shù)據(jù)塊,從而保證了聲音的連續(xù),有了這種單機上的實時采集、回放功能后,接下來的工作就是在網(wǎng)絡(luò)上傳送話音數(shù)據(jù)。采樣值是指每一次采樣周期內(nèi)聲音模擬信號的積分值。 Windows 支持兩種 RIFF(Resource
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1