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

正文內(nèi)容

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

2024-12-10 02:23本頁面
  

【正文】 在客戶端,接收到“ J”后,做出判斷,知道收到了系統(tǒng)信息,然后根據(jù)信息里的。然后用 waveInOpen 函數(shù)打開錄音設備,以初始化WAVE 波形的頭信息, waveInPrepareHeader為錄音設備準備緩存后, waveInAddBuffer/給 輸 入 設 備增 加 一 個緩 存 ,開 始 錄 音, 調(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)檢測接受,每輪聲音文件接收完畢 后,都要檢查是否地址越界;接受完畢后,關閉 SOCKET 連接; ② Audio_Send_CThread:聲音文件發(fā)送線程 東南大學成賢學院 第 29 頁 共 44 頁 先定義 CSocket 類的對象 m_Client,調(diào)用 Connect 函數(shù),建立與對方的連接,循環(huán)檢測發(fā)送聲音文件,首先發(fā)送塊的長度,其次發(fā)送塊的內(nèi) 容;用 dwSent 表示已經(jīng)發(fā)送的字節(jié)數(shù),發(fā)送聲音文件開始,每輪聲音文件發(fā)送完畢后,都要檢查是否地址越界;接受完畢后,關閉 SOCKET 連接; 遠程控制 此功能類似于 的遠程協(xié)助,但有很大的局限性,僅能夠鎖定或解鎖對方鍵盤,鼠標,得到對方進程和殺死某個進程。(本程序還沒有完全實現(xiàn)這個功能)。當應用程序不斷向設備驅(qū)動程序提供音頻數(shù)據(jù)時,設備驅(qū)動過程控制音頻設備在后臺完成錄音和放音的具體操作,通過回調(diào)機制,我們又可以檢測到什么時候用完一個數(shù)據(jù)塊,并 及時傳送下一個數(shù)據(jù)塊,從而保證了聲音的連續(xù),有了這種單機上的實時采集、回放功能后,接下來的工作就是在網(wǎng)絡上傳送話音數(shù)據(jù)。 要實現(xiàn)點對點語音通信,只要針對一個點實現(xiàn)話音的實時采集、處理、播放,同時能進行可靠的傳送和接收,這樣兩點一連便可通話。采樣值是指每一次采樣周期內(nèi)聲音模擬信號的積分值。常見的WAVE 語音文件主要有兩種,分別對應于單聲道( 采樣率、 8Bit 的采樣值)和雙聲道( 采樣率、 16Bit 的采樣值)。 Windows 支持兩種 RIFF(Resource Interchange File Format,資源交互文件格式 )格式的音頻文件: MIDI 的 RMID 文件和波形音頻文件格式 WAVE 文件,其中在計算機領域最常用的數(shù)字化聲音文件格式是后者,它是微軟專門為 Windows 系 統(tǒng)定義的波形文件格式( Waveform Audio),由于其擴展名為 .wav,因而該類文件也被稱為 WAVE 文件。 ⑵ 在 m_rgn 內(nèi)顯示動態(tài)信息 —— GetRValue 可以得到屏幕像素的值,定義 CString 類的函數(shù) string,用來編輯可以顯示的內(nèi)容,最后由 SetWindowText 顯示在該區(qū)域內(nèi); 不足的地方是,目前還不能把截取的圖像直接顯示在編輯框。//對象和指針 定義變量 dwRead,來累計傳送字節(jié)數(shù),初始為 0,只要比要傳送的文件小就進行循環(huán)傳送;在循環(huán)過程中還要判斷 2種中斷的方式是否發(fā)生,每次傳送過程中都要分配 1024字節(jié)的空間,來存儲讀入的文件流, sockRecv 對象調(diào)用函數(shù) Send 發(fā)送這些字節(jié),每次還可以設置進度條,以觀察傳送的狀況,百分比用 GetDlgItem(IDC_STATIC1) SetWindowText (str),進度條用 (a),當然每次都是計算之后得到的數(shù)值; dwRead 隨著傳送而增加,直到大于等于 StreamFileInfo. nFileSizeLow 時循環(huán)結束,進度條和百分比分數(shù)自動清零,結束進程,返回到原來狀態(tài)(傳輸過程的界面如圖 )。 //保留,為 0 DWORD dwReserved1。 //文件大小的高位雙字 DWORD nFileSizeLow。 //文件的最后訪問時間 FILETIME ftLastWriteTime。 //文件的屬性 FILETIME ftCreationTime。(在傳送線程函數(shù)里沒傳送 1k 的文件就會循環(huán)詢問一次 m_bSendEnd 是否為 true),故在確定 m_bSendEnd 為 true 后,向?qū)Ψ桨l(fā)東南大學成賢學院 第 25 頁 共 44 頁 送消息 發(fā)送端終止 ,然后結束退出; ( 4)在傳送過程中:如果對方中止,則會受到消息“客戶端接收終止”,則設置m_bRecEnd 為 TRUE,同樣的在傳送 線程函數(shù)里沒傳送 1k 的文件就會循環(huán)詢問一次m_bSendEnd 是否為 true,故在確定 m_bSendEnd 為 true 后,結束退出; 在沒有任何終止消息的情況下,調(diào)用函數(shù) AfxBeginThread創(chuàng)建線程,開始發(fā)送文件:首先調(diào)用 Open 函數(shù)打開要傳送的文件,然后創(chuàng)建 CSocket 類的對象 sockSrvr,開始另一個套接字,等待對方的連接;連接成功后,創(chuàng)建 SSFI 對象,來接收文件的信息, SSFI 結構如下: typedef struct SSFI { //SOCKET_STREAM_FILE_INFO 獲取文件信息 TCHAR szFileTitle[128]。由按鈕 BUTTON6響應函數(shù)實現(xiàn)。 服務器:在斷開連接前,向客戶端發(fā)送消息,能夠通知客戶端自己已停止工作 ,然后各按鈕 false。 此時表示服務器不再接收文件,然后客戶端再根據(jù)這個 消息作出下一步的動作,具體操作在 。 ②接收 (這是本程序的一個關鍵部分,一些文件的傳輸狀態(tài)要靠這部分決定,但不是理想解決方案,主要是在傳輸文件時用到)。編輯要發(fā)送的信息,用戶將要發(fā)送的信息輸入編輯框 EDIT1,傳遞給變量 m_strMsg,在不是空字符串的情況下操作,首先將值賦予 m_strMessage,用GetLength()計算其長度,然后調(diào)用 Send 函數(shù),通過 方;在連接沒錯誤的情況下,取得系統(tǒng)時間, GetLocalTime(amp。tm),格式設置為“年 /月 /日 時 /分 /秒” Format(%y/%m/%d %H:%M:%S ),然后在自己對話框上顯示已經(jīng)發(fā)送的消息;最后將記錄保存, fp=fopen(f:\\,ab+)。 本軟件也采用異步非阻塞模式,發(fā)送和接收消息是通過 send()和 receive()函數(shù)實現(xiàn)的,首先從編輯框里得到要發(fā)送的數(shù)據(jù)及其長度,然后調(diào)用 send()發(fā)送給對方,同時可以接收來自對方的消息,具體操作如下: ①發(fā)送 客戶端:定義局部變量 iLength 表示發(fā)送數(shù)據(jù)長度, iSentmessage 表連接狀態(tài),用字符串 m_strMessage。在實際 Windows 網(wǎng)絡通信軟件開發(fā)中,異步非阻塞套接字是用的最多的。阻塞套接字是指執(zhí)行此套接字的網(wǎng)絡調(diào)用時,直到成功才返回,否則一直阻塞在此網(wǎng)絡調(diào)用上,比如調(diào)用 receive ()函數(shù)讀取網(wǎng)絡緩沖區(qū)中的數(shù)據(jù),如果沒有數(shù)據(jù)到達,將一直掛在 receive ()這個函數(shù)調(diào)用上,直到讀到一些數(shù)據(jù),此函數(shù)調(diào)用才返回;而非阻塞套接字是指執(zhí)行此套接字的網(wǎng)絡調(diào)用時,不管是否執(zhí)行成功,都立即返回。在 TCP/IP 協(xié)議的實現(xiàn)中,東南大學成賢學院 第 23 頁 共 44 頁 端口操作類似于一般的 I/O操作,進程獲取一個端口,相當于獲取本地唯一的 I/O文件,可以用一般的讀寫原語訪問),客戶連接時也是通過這個指定的端口;當服務器偵聽到客戶端的連接后,自動調(diào)用 OnAccept()函數(shù),表示已經(jīng)和客戶端去的連接,使對話框上各控件可以工作;同時定義局部變量 CString Cip 和 UINT CPort,調(diào)用庫函數(shù) GetPeerName()得到客戶端 IP 和端口,并且能夠在 STATIC2上顯示, GetDlgItem (IDC_STATIC2)SetWindowText(Cip)。 服務器端:類似于客戶端 ,點擊 SERVER 按鈕,連接成功前不允許其它按鈕能夠工作,所以都設置位 FALSE, 由于對話框類 CMySeverDlg繼承了 CAsyncSocket類,消息響應函數(shù)里直接調(diào)用類成員 Create(), Listen ()即可,其中調(diào)用 Create()時需要制定端口(端口是一種抽象的軟件結構,包括一些數(shù)據(jù)結構和 IO 緩沖區(qū)。 連接應用程序 客戶端與服務器的連接通過建立 SOCKET 套接字完成的,客戶端進行連接,服務器進程偵聽,如果在規(guī)定的時間內(nèi)連接不上,或是網(wǎng)絡問題,則系統(tǒng)自動退出,提示用戶有錯誤發(fā)生;一旦建立連接,就可以通 過以定義函數(shù)發(fā)送和接受消息,直到用戶退出。 添加了所有的函數(shù)后,應向?qū)υ捒蝾愄砑右粋€報路類的變量,對于服務器的功能,在對話框類中需要兩個變量,一個用于偵聽連接請求,另一個用于被連接到另一個應用程序。 virtual void OnReceive(int nErrorCode)。 virtual void OnReceive(int nErrorCode)。指定類型為 void,函數(shù)聲明為 SetParent (CDialog* pWnd)。指定變量類型為 Cdialog*,變量名為 m_pWnd 。 控件 功能 ID 標題 VALUE BUTTON1 連接到服務器 IDC_BUTTON1 CONNECT BUTTON2 停止與服務器連接 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 東南大學成賢學院 第 20 頁 共 44 頁 BUTTON10 設置字體大小 IDC_BUTTON10 FONT BUTTON11 清除編輯框內(nèi)紀錄 IDC_BUTTON11 clear PROGRESS1 發(fā)送文件進度 IDC_PROGRESS1 m_CtrlProgressSend LIST1 顯示消息 IDC_LIST1 m_ctrMesssage EDIT2 編輯要發(fā)送的消息 IDC_EDIT2 m_strMess 表 客戶端對話框上控件的作用 ③服務器登陸窗口(如圖 ): 圖 3. 11服務器登陸窗口 ④服務器操作界面(如圖 ): 東南大學成賢學院 第 21 頁 共 44 頁 圖 3. 12服務器操作界 面 服務器對話框上控件的功能如表 。 東南大學成賢學院 第 17 頁 共 44 頁 具體實現(xiàn)部分 實現(xiàn)基本聊天的功能 創(chuàng)建應用程序 創(chuàng)建一個對話框風 格的應用程序,過程 : 設置工程名稱和保存路徑 選擇 “基本對話框” 選擇“ Windows Sockets[W]” 選擇“ Windows Sockets[W]” 選擇“作為靜態(tài)的 DLL”或“作為共享 DLL” 完成。 傳輸文件過程 東南大學成賢學院 第 14 頁 共 44 頁 自己中斷 服務器 客戶端 向客戶端發(fā)送傳輸文件請求,等待 等待服務器的請求 自己中斷 開始傳輸文件進程進程 開始傳輸文件進程進程 SOCKET 建立連接并傳輸文件 SOCKET 建立連接并傳輸文件 過程中斷或?qū)Ψ降闹袛? 過程中斷或?qū)Ψ降闹袛? 傳輸完畢,結束進程 傳輸完畢,結束進程 關閉 連接,返回 關閉連接,返回 對方拒絕 對方拒絕 東南大學成賢學院 第 15 頁 共 44 頁 圖 3. 3 傳輸文件過程 首先服務器向客戶端發(fā)送請求,要求傳送文件,在得到客戶端相應之前,雙方都可以取消這次傳輸,同時通知對方已經(jīng)取消連接;一旦客戶端給了服務器響應,則建立進程,進行傳輸;建立的進程里,要定義新的 SOCKET 套接字,以建立連接,在 傳輸過程中,同樣可以進行中斷,同時通知對方已經(jīng)取消連接;傳輸結束后,斷開連接,結束該進程。 完成三次握手,客戶端與服務器開始傳送數(shù)據(jù)。 通信過程 C/S 模式的請求響應方式 圖 3. 1 TCP/IP 協(xié)議三次握手過程 在 TCP/IP 協(xié)議中, TCP 協(xié)議提供可靠的連接服務,采用三次握手建立一個連接(如圖 )。參數(shù):s: Socket 的識別碼; buf:存放接收到的資料的暫存區(qū); len buf:的長度 flags:此函數(shù)被調(diào)用的方
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1