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

正文內(nèi)容

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

2025-01-31 02:23上一頁面

下一頁面
  

【正文】 對于前者,采用 Windows MDK的低層音頻服務(wù)比較合適,因為低層音頻服務(wù)中的回調(diào)機制為我們提供了很大的方便。 //文件的最后修改時間 DWORD nFileSizeHigh。 服務(wù)器端:定義局 部變量 iLength 表示發(fā)送數(shù)據(jù)長度, iSentmessage 表連接狀態(tài),用字符串 m_strMessage。 virtual void OnAccept(int nErrorCode)。 第一次握手:建立連接時,客戶端發(fā)送 syn 包 (syn=j)到服務(wù)器,并進(jìn)入 SYN_SEND狀態(tài),等待服務(wù)器確認(rèn); 第二次握手:服務(wù)器收到 syn 包,必須確認(rèn)客戶的 SYN( ack=j+1),同時自己也發(fā)送一個 SYN包( syn=k),即 SYN+ACK包,此時服務(wù)器進(jìn)入 SYN_RECV 狀態(tài); 第三次握手:客戶端收到服務(wù)器的 SYN+ ACK 包,向服務(wù)器東南大學(xué)成賢學(xué)院 第 12 頁 共 44 頁 發(fā)送確認(rèn)包 ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入 ESTABLISHED 狀態(tài),完成三次握手。另外,與程序啟動時調(diào)用 WSAStartup()憨數(shù)相對應(yīng),程序結(jié)束前,需要調(diào)用 WSACleanup() 來通知 Winsock Dll 釋放 Socket 所占用的資源。 監(jiān)聽 當(dāng)服務(wù)器端的 Socket 對象綁定完成之后 ,服務(wù)器端必須建立一個監(jiān)聽的隊列來接收客戶端的連接請求。這樣就能看到完整的已 發(fā)送和已接收到的消息列表,還可以對發(fā)送消息的應(yīng)用程序和接收消息的應(yīng)用程序進(jìn)行比較。 程序維護(hù)簡單,升級方便 Inter 發(fā)展迅速,其各種協(xié)議 也在不斷發(fā)展與完善。UDP 協(xié)議使用數(shù)據(jù)報式套接字 SOCKET_DGRAM。 具有代表性的技術(shù)有: P2P 多線程斷點續(xù)傳的實現(xiàn); P2P 之 UDP 穿透 NAT 的原理與實現(xiàn); IPTV 業(yè)務(wù)承載網(wǎng)的解決; IPTV 流媒體分發(fā)和交付技術(shù)的新突破;第三代google 排名搜索引擎技術(shù);網(wǎng)格的應(yīng)用;基于 P2P 思想的 蠕蟲的原理與防治;網(wǎng)絡(luò)電話;流媒體應(yīng)用等。但是,對于服務(wù)器來說,它們 之間仍然是對等聯(lián)網(wǎng)的。 procedures in Windows XP system and under Visual C + + piler , and is running good in Windows NT and 100M software creates the dialog box applications through multithreaded operation。由于它們都需要有位于中心的服務(wù)器來協(xié)調(diào),于是便有了編寫本軟件的構(gòu)想。它們可以在同一臺計算機上,也可以把應(yīng)用程序復(fù)制到另一臺計算機上,這樣沒有中間服務(wù)器存在,在兩個獨立的計算機上分別運 行應(yīng)用程序,從而通過網(wǎng)絡(luò)傳遞消息。 2021年,尼古拉斯 Napster 的文件共享功能在局域網(wǎng)中共享目錄也是再平 常不過的事情。 TCP 將包排序并進(jìn)行錯誤檢查,同時實現(xiàn)虛電路間的連接。一般情 況下 TCP Socket 的數(shù)據(jù)發(fā)送和接收是調(diào)用 send() 及 recv() 這兩個函數(shù)來達(dá)成,而 UDP Socket則是用 sendto() 及 recvfrom() 這兩個函數(shù),這兩個函數(shù)調(diào)用成功發(fā)揮發(fā)送或接收的數(shù)據(jù)的長度,否則返回 SOCKET_ERROR。與時同時,另一個應(yīng)用程序,一般是東南大學(xué)成賢學(xué)院 第 7 頁 共 44 頁 運行在另一臺計算機上(當(dāng)然也可以是同一臺機器上),試圖同第一個應(yīng)用程序連接。應(yīng)用程序在網(wǎng)絡(luò)上傳輸,接收的信息都通過這個 Socket 接口來實現(xiàn)。為了知道什么時候客戶端提出連接要求,從而服務(wù)器端的 Socket 在恰當(dāng)?shù)臅r候調(diào)用 accept()函數(shù)完成連接的建立,我們就要使用WSAAsyncSelect()函數(shù),讓系統(tǒng)主動來通知我們有客戶端提出連接請求了。與服務(wù)器端的 socket 不同的是,客戶端的 socket可以調(diào)用 bind()函數(shù),由自己來指定 IP 地址及 port 號碼;但是也可以不調(diào)用 bind(),而由 Winsock 來自動設(shè)定 IP 地址及 port 號碼。 東南大學(xué)成賢學(xué)院 第 17 頁 共 44 頁 具體實現(xiàn)部分 實現(xiàn)基本聊天的功能 創(chuàng)建應(yīng)用程序 創(chuàng)建一個對話框風(fēng) 格的應(yīng)用程序,過程 : 設(shè)置工程名稱和保存路徑 選擇 “基本對話框” 選擇“ Windows Sockets[W]” 選擇“ Windows Sockets[W]” 選擇“作為靜態(tài)的 DLL”或“作為共享 DLL” 完成。 服務(wù)器端:類似于客戶端 ,點擊 SERVER 按鈕,連接成功前不允許其它按鈕能夠工作,所以都設(shè)置位 FALSE, 由于對話框類 CMySeverDlg繼承了 CAsyncSocket類,消息響應(yīng)函數(shù)里直接調(diào)用類成員 Create(), Listen ()即可,其中調(diào)用 Create()時需要制定端口(端口是一種抽象的軟件結(jié)構(gòu),包括一些數(shù)據(jù)結(jié)構(gòu)和 IO 緩沖區(qū)。 此時表示服務(wù)器不再接收文件,然后客戶端再根據(jù)這個 消息作出下一步的動作,具體操作在 。//對象和指針 定義變量 dwRead,來累計傳送字節(jié)數(shù),初始為 0,只要比要傳送的文件小就進(jìn)行循環(huán)傳送;在循環(huán)過程中還要判斷 2種中斷的方式是否發(fā)生,每次傳送過程中都要分配 1024字節(jié)的空間,來存儲讀入的文件流, sockRecv 對象調(diào)用函數(shù) Send 發(fā)送這些字節(jié),每次還可以設(shè)置進(jìn)度條,以觀察傳送的狀況,百分比用 GetDlgItem(IDC_STATIC1) SetWindowText (str),進(jìn)度條用 (a),當(dāng)然每次都是計算之后得到的數(shù)值; dwRead 隨著傳送而增加,直到大于等于 StreamFileInfo. nFileSizeLow 時循環(huán)結(jié)束,進(jìn)度條和百分比分?jǐn)?shù)自動清零,結(jié)束進(jìn)程,返回到原來狀態(tài)(傳輸過程的界面如圖 )。然后用 waveInOpen 函數(shù)打開錄音設(shè)備,以初始化WAVE 波形的頭信息, waveInPrepareHeader為錄音設(shè)備準(zhǔn)備緩存后, waveInAddBuffer/給 輸 入 設(shè) 備增 加 一 個緩 存 ,開 始 錄 音, 調(diào) 用 waveInStart 函 數(shù) , 開始Audio_Listen_CThread 和 Audio_Send_CThread 進(jìn)程; ① Audio_Listen_CThread:聲音文件接受線程 先定義 CSocket 類的對象 m_Server,調(diào)用 Create, Listen,等待對方連接,連接成功后,開始循環(huán)接收聲音文件,首先接收文件長度,接下來開辟 length 長的內(nèi)存空間,內(nèi)存申請成功,可以進(jìn)行循環(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 連接; 遠(yuǎn)程控制 此功能類似于 的遠(yuǎn)程協(xié)助,但有很大的局限性,僅能夠鎖定或解鎖對方鍵盤,鼠標(biāo),得到對方進(jìn)程和殺死某個進(jìn)程。常見的WAVE 語音文件主要有兩種,分別對應(yīng)于單聲道( 采樣率、 8Bit 的采樣值)和雙聲道( 采樣率、 16Bit 的采樣值)。(在傳送線程函數(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]。在實際 Windows 網(wǎng)絡(luò)通信軟件開發(fā)中,異步非阻塞套接字是用的最多的。指定類型為 void,函數(shù)聲明為 SetParent (CDialog* pWnd)。參數(shù): s: Socket 的識別碼 buf:存放要傳送的資料的暫存區(qū); len buf:的長度;flags:此函數(shù)被調(diào) 用的方式。為了使服務(wù)器端接受客戶端的連接請求,就要使用 accept() 函數(shù),該函數(shù)新建一 Socket 與客戶端的 Socket 相 通,原先監(jiān)聽之 Socket 繼續(xù)進(jìn)入監(jiān)聽狀態(tài),等待他人的連接要求。 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。正像兩個人打電話交談一樣,這個連接是一個雙向的通道,即雙方都可以發(fā)送消息。 Exit Process()函數(shù)即可在進(jìn)程中的某個線程中使用,并將立即終止本進(jìn)程的運行。 TCP 協(xié)議即采用流式套接字 SOCKET_STREAM。 在國外, P2P 發(fā)展已經(jīng)如火如荼, Intel、 Sun、 Microsoft 等公司已經(jīng)在制定 P2P的標(biāo)準(zhǔn)。在現(xiàn)實生活中我們每天都按照 P2P 模式面對面地或者通過電話交流和溝通。服務(wù)器 。東南大學(xué)成賢學(xué)院 第 I 頁 共 44 頁 畢業(yè)設(shè)計報告 (論文 ) 題目: 基于 Visual C++的 P2P 文件傳輸系統(tǒng)的設(shè)計與實現(xiàn) 所 屬 系 計算機系 _ 專 業(yè) 計算機 科學(xué)與技術(shù) 學(xué) 號 姓 名 指導(dǎo)教師 起訖日期 設(shè)計地點 南京網(wǎng)博 _______ 東南大學(xué)成賢學(xué)院 第 II 頁 共 44 頁 東南大學(xué)成賢學(xué)院畢業(yè)設(shè)計報告(論文) 誠 信 承 諾 本人承諾所呈交的畢業(yè)設(shè)計報告(論文)及取得的成果是在導(dǎo)師指導(dǎo)下完成,引用他人成果的部分均已列出參考文獻(xiàn)。客戶端 。 P2P 看起來似乎很新,但是正如 B2C、 B2B 是將現(xiàn)實世界中很平常的東西移植到互聯(lián)網(wǎng)上一樣, P2P 并不是什么新東西?!?P2P 給互聯(lián)網(wǎng)的分布、共享精神帶來了無限的遐想。 DNS 在某些情況下使用 TCP 協(xié)議發(fā)送和接收域名數(shù)據(jù)庫,但使用 UDP 協(xié)議傳送有關(guān)單個主機的信息。除了這種進(jìn)程的正常退出方式外,有時還需要在程序中通過代碼來強制結(jié)束本進(jìn)程或其它進(jìn)程的運行。一旦兩個應(yīng)用程序建立了連接,它們之間就可以互相發(fā)送和接收消息 。此函數(shù)調(diào)用成功返回 Socket 對象,失敗則返回 INVALID_SOCKET(調(diào)用WSAGetLastError()可得知原因,所有 WinSocket 的 API 函數(shù)都可以使用這個函數(shù)來獲取失敗的原因 )。 服務(wù)器端接受客戶端的連接請求 當(dāng) Client 提出連接請求時, Server 端窗會收到 Winsock Stack 送來我們自定義的東南大學(xué)成賢學(xué)院 第 10 頁 共 44 頁 一個消息,這時,我們可以分析 lParam,然后調(diào)用相關(guān)的函數(shù)來處理此事件。 int PASCAL FAR send( SOCKET s, const char FAR *buf,int len, int flags )。還需東南大學(xué)成賢學(xué)院 第 22 頁 共 44 頁 要向該類中添加一個能設(shè)置指標(biāo)的方 法,因此添加一個成員函數(shù)。比如調(diào)用 receive ()函數(shù)讀取網(wǎng)絡(luò)緩沖區(qū)中數(shù)據(jù),不管是否讀到數(shù)據(jù)都立即返回,而不會一直掛在此函數(shù)調(diào)用上。 初始時要創(chuàng)建文件對話框 dlg,如果用戶在選擇完要傳送的檔后按下 o
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1