版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 本科畢業(yè)設(shè)計(jì)</b></p><p><b> ?。?0 屆)</b></p><p> 基于Socket技術(shù)的Windows Mobile設(shè)備間的文件傳輸工具開(kāi)發(fā)</p><p> 所在學(xué)院 </p><p&g
2、t; 專業(yè)班級(jí) 電子信息工程 </p><p> 學(xué)生姓名 學(xué)號(hào) </p><p> 指導(dǎo)教師 職稱 </p><p> 完成日期 年 月 </p><p><b&
3、gt; 摘 要</b></p><p> 在網(wǎng)絡(luò)通信中,Socket技術(shù)是發(fā)送端到達(dá)接收端的一個(gè)有效途徑,在網(wǎng)絡(luò)傳輸層上建立通信關(guān)系,實(shí)現(xiàn)數(shù)據(jù)交互的接口。由于網(wǎng)絡(luò)通信的復(fù)雜性,在建立通信關(guān)系的前提下,必須引進(jìn)線程機(jī)制處理通信細(xì)節(jié),以確保各節(jié)點(diǎn)通訊的獨(dú)立和并發(fā)。在Windows Mobile設(shè)備上實(shí)現(xiàn)基于Socket的文件傳輸,必須深入理解線程的處理技巧,同時(shí)將其靈活運(yùn)用到通信網(wǎng)絡(luò)編程中,完成文件
4、傳輸?shù)墓δ?。本課題首先介紹了Socket技術(shù)的原理,通過(guò)Socket技術(shù),線程技術(shù)和網(wǎng)絡(luò)通信方面內(nèi)容,聯(lián)系到Windows Mobile,在Visual Studio 2008開(kāi)發(fā)環(huán)境中進(jìn)行應(yīng)用程序開(kāi)發(fā),通過(guò)運(yùn)用Socket技術(shù),實(shí)現(xiàn)目標(biāo)。</p><p> 本文研究并實(shí)現(xiàn)了Windows Mobile下的套接字連接和手機(jī)之間數(shù)據(jù)傳輸?shù)炔僮鳌V饕敿?xì)講解了Windows Mobile下套接字的體系結(jié)構(gòu)與核心功能
5、類等必要的知識(shí)脈絡(luò);對(duì)主機(jī)域名解析服務(wù)與網(wǎng)絡(luò)接入點(diǎn)相關(guān)操作技術(shù)做了進(jìn)一步的了解和研究,并詳細(xì)分析了Windows Mobile下的套接字連接的操作實(shí)現(xiàn);最后在介紹了PC端的套接字連接相關(guān)知識(shí)的基礎(chǔ)上,結(jié)合PC端套接字操作的程序流程,用代碼實(shí)現(xiàn)系統(tǒng)數(shù)據(jù)傳輸,驗(yàn)證了研究的正確性,方向性和可靠性。并為手機(jī)間文件的相互傳輸提供了一個(gè)很好的服務(wù)平臺(tái)。</p><p> 關(guān)鍵詞:套接字;線程;網(wǎng)絡(luò)通信;文件傳輸</p
6、><p><b> Abstract</b></p><p> In Network Communication, Socket identified an effective way from the sender to the receiver, to establish communications upon the transport layer and to
7、 implement the interface for data interaction. Because of the complexity of network communications, in order to establish communications, we must introduce thread mechanism processing communication detail to ensure the i
8、ndependence of each node. In order to implement file transferring based on Socket in Windows Mobile devices, we must have a dee</p><p> By the means of researching, it has been implemented to connect by Soc
9、ket and transfer data. In this paper, it is mainly explained in details about the socket in Windows Mobile Architecture and basic knowledge of the core functional classes, etc.; it has in-depth research and development a
10、bout the host domain name resolution services and the operations of the network access point technology. Then it has analyzed in details on Windows Mobile realization of the socket connection; finally it has in</p>
11、<p> Keywords: Socket; thread; network communication; file transfer</p><p><b> 目 錄</b></p><p><b> 1 引言1</b></p><p> 1.1 研究背景1</p><p&
12、gt; 1.2 研究?jī)?nèi)容2</p><p> 1.3 研究現(xiàn)狀2</p><p> 2 Socket技術(shù)及其線程通信3</p><p> 2.1 Socket技術(shù)簡(jiǎn)析3</p><p> 2.2 Socket的分類4</p><p><b> 2.3線程原理7</b><
13、;/p><p> 2.4 網(wǎng)絡(luò)通信原理9</p><p> 3 Socket應(yīng)用程序開(kāi)發(fā)11</p><p> 3.1 Windows Mobile簡(jiǎn)介11</p><p> 3.2 Visual Studio 開(kāi)發(fā)環(huán)境介紹11</p><p> 3.3 網(wǎng)絡(luò)連接的建立12</p><
14、;p> 3.4.設(shè)備間的文件傳輸開(kāi)發(fā)15</p><p> 3.4.1 新建工程15</p><p> 3.4.2 服務(wù)器端16</p><p> 3.4.3 客戶端17</p><p> 3.4.4 應(yīng)用程序測(cè)試18</p><p><b> 4 結(jié)論21</b>&
15、lt;/p><p> 致 謝錯(cuò)誤!未定義書簽。</p><p><b> 參考文獻(xiàn)22</b></p><p> 附錄:應(yīng)用程序源代碼24</p><p><b> 1 引言</b></p><p> Socket編程技術(shù)作為進(jìn)程問(wèn)通信的常用技術(shù),以其能夠靈活定
16、制包格式、靈活構(gòu)造高效通信服務(wù)等優(yōu)勢(shì)成為構(gòu)建基于TCP/IP協(xié)議的網(wǎng)絡(luò)應(yīng)用程序時(shí)最常用的開(kāi)發(fā)技術(shù)之一。由于開(kāi)發(fā)基于Socket通信的網(wǎng)絡(luò)應(yīng)用程序時(shí)不必關(guān)心Socket通信部分的平臺(tái)移植問(wèn)題、Socket通信問(wèn)題等一系列兼容性問(wèn)題,可以直接構(gòu)造應(yīng)用,從而大大加快開(kāi)發(fā)進(jìn)度[1]。</p><p> 目前還沒(méi)有一個(gè)解決兼容性的問(wèn)題開(kāi)放式框架,可用于構(gòu)建基于Socket通信應(yīng)用為基礎(chǔ)的網(wǎng)絡(luò),而建立UDP服務(wù)器,客戶端的
17、TCP長(zhǎng)連接往往是建立Socket技術(shù)的應(yīng)用程序的關(guān)鍵所在。因此,建立一個(gè)支持多個(gè)TCP和UDP服務(wù)器,多個(gè)TCP長(zhǎng)連接的客戶端Socket通信框架對(duì)于大力加快項(xiàng)目開(kāi)發(fā)進(jìn)度,降低了移植代碼的困難具有重大意義。</p><p><b> 1.1 研究背景</b></p><p> 在早期,一個(gè)加利福尼亞大學(xué)的一個(gè)分校研究組,讓他們將TCP/IP軟件移植到UNIX操作
18、系統(tǒng)中,并將結(jié)果提供給其他網(wǎng)點(diǎn)。他們創(chuàng)建了一個(gè)接口,應(yīng)用程序可以通過(guò)這借口進(jìn)行通信。并且他們認(rèn)為只要有可能就使用以有的系統(tǒng)調(diào)用,對(duì)那些不能快速升級(jí)到已有函數(shù)集的情況,就再增加新的系統(tǒng)調(diào)用以支持TCP/IP功能。這樣做的結(jié)果就出現(xiàn)了插口接口(Berkeley Socket),這個(gè)系統(tǒng)被稱為Berkeley UNIX或BSD UNIX。TCP/IP 首次出現(xiàn)在BSD 4.1 版本release 4.1 of Berkeley Softwar
19、e Distribution。由于很多計(jì)算機(jī)商人都采用了Berkeley UNIX,因此,Socket接口被廣泛使用,也成了現(xiàn)在的標(biāo)準(zhǔn)。</p><p> Socket的英文原意就是“孔”或“插座”,現(xiàn)在,作為BSD UNIX的進(jìn)程通訊機(jī)制,取其后一種意義。表面意義為,通信間需要一個(gè)Scoket作為兩者之間的媒介。</p><p><b> 1.2 研究?jī)?nèi)容</b>
20、;</p><p> 一般情況下,用戶都會(huì)使用Windows Mobile設(shè)備上的WiFi模塊來(lái)接入Access Node,以達(dá)到交互的目的。但是如果在沒(méi)有Access Node的情況下,同樣也可以利用WiFi來(lái)建立設(shè)備與設(shè)備之間的連接,這就是所謂的Ad-hoc網(wǎng)絡(luò)。本課題要求學(xué)生理解Socket網(wǎng)絡(luò)編程的基本原理,研究如何在Windows Mobile設(shè)備上實(shí)現(xiàn)基于Socket的文件傳輸,并通過(guò)Visual
21、Studio 2008進(jìn)行軟件開(kāi)發(fā)。</p><p><b> 研究?jī)?nèi)容主要包括:</b></p><p> 1. 利用WiFi建立設(shè)備連接,為設(shè)備之間的文件傳輸提供前提;</p><p> 2. 設(shè)備連接后,編寫客戶端和服務(wù)器端的兩個(gè)應(yīng)用程序,并進(jìn)行設(shè)置;</p><p> 3. 設(shè)置完成后,Windows M
22、obile設(shè)備之間利用Socket來(lái)實(shí)現(xiàn)消息的實(shí)時(shí)發(fā)送與接收,以完成設(shè)備之間的文件傳輸?shù)哪康摹?lt;/p><p><b> 1.3 研究現(xiàn)狀</b></p><p> 網(wǎng)絡(luò)通信技術(shù)隨著應(yīng)用需求的巨大增長(zhǎng)而迅速發(fā)展著。目前,許多通信手段滿足不了需求劇增的們,對(duì)于開(kāi)發(fā)新的通信技術(shù)顯得尤為重要。而Socket技術(shù)作為IT網(wǎng)絡(luò)一個(gè)不可或缺和占主要地位的一部分。從80年代的早
23、期起步到如今的成熟,Socket技術(shù)也更加的重要了,許多的IT領(lǐng)域都離不開(kāi)Socket技術(shù)。如今世界在發(fā)展,科技在進(jìn)步,網(wǎng)絡(luò)更是日新月異,因此,Socket技術(shù)也會(huì)更加的發(fā)展,更加的體現(xiàn)了Socket的含金量。</p><p> 2 Socket技術(shù)及其線程通信</p><p> 本章講述Socket技術(shù)的含義,提出Socket的原題,在本課題中的用處,以及線程技術(shù)的原理與含義。<
24、;/p><p> 2.1 Socket技術(shù)簡(jiǎn)析</p><p> 應(yīng)用層通過(guò)傳輸層進(jìn)行數(shù)據(jù)通信和信息交互時(shí),會(huì)出現(xiàn)TCP和UDP同時(shí)遇到為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問(wèn)題。而且多個(gè)應(yīng)用程序進(jìn)程可能需要通過(guò)同一個(gè)TCP協(xié)議端口傳輸數(shù)據(jù)。因此為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了稱為套接字(Socket)的接口,區(qū)分來(lái)自不同應(yīng)用程序進(jìn)程間的
25、網(wǎng)絡(luò)通信和連接請(qǐng)求。</p><p> 通信的目的IP地址、使用的端口號(hào)和使用的傳輸層協(xié)議(TCP或UDP)是生成套接字主要3個(gè)參數(shù)。通過(guò)將這3個(gè)參數(shù)結(jié)合起來(lái),與一個(gè)Socket綁定,應(yīng)用層就可以和傳輸層通過(guò)套接字接口,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)牟l(fā)服務(wù)[2]。</p><p> Socket可以看成在兩個(gè)程序進(jìn)行通訊連接中的一個(gè)端口,一個(gè)程序?qū)⒁欢涡畔懭隨ocket中,該Socket將這段信息
26、發(fā)送給另外一個(gè)Socket中,使這段信息能傳送到其他程序中,實(shí)現(xiàn)數(shù)據(jù)傳輸。如圖2-1所示。</p><p> Socket (網(wǎng)絡(luò)接口卡) Socket</p><p> Program A Program B</p><
27、;p><b> 網(wǎng)絡(luò)管理軟件</b></p><p> 圖2-1 Socket傳輸示意圖</p><p> 在Linux中的網(wǎng)絡(luò)編程通過(guò)Socket接口進(jìn)行,是一種特殊的文字描述符。Socket是使用標(biāo)準(zhǔn)Linux文件符(file descriptor)和其他程序通信的方式。在這里Socket編程采用客戶端/服務(wù)器模式,如下圖2-2所示。</p&g
28、t;<p> 圖2-2 Socket客戶端/服務(wù)器模式 </p><p> Socket是網(wǎng)絡(luò)傳輸層供給應(yīng)用層的編程接口,是一個(gè)數(shù)據(jù)交互的轉(zhuǎn)接點(diǎn)。而傳輸層則在網(wǎng)絡(luò)層的基礎(chǔ)上提供進(jìn)程與進(jìn)程間的邏輯通道,應(yīng)用層的進(jìn)程則需要利用傳輸層向另一臺(tái)主機(jī)的某一進(jìn)程通信,從而達(dá)到信息交互。</p><p> Socket編程對(duì)客戶端和服務(wù)器應(yīng)用程序進(jìn)行開(kāi)發(fā)研究,以便它可以在本地網(wǎng)絡(luò)上進(jìn)
29、行通信,還可以通過(guò)互聯(lián)網(wǎng)在世界各地進(jìn)行交流。Scoket編寫并運(yùn)行客戶端和服務(wù)器程序,雙方通過(guò)建立一個(gè)套接字,并通過(guò)多種方式提高性能的socket數(shù)[2]。</p><p> 2.2 Socket的分類</p><p> 常見(jiàn)的Socket有3種類型。</p><p> (1)流式套接字(SOCK_STREAM):提供可靠的通信流量,采用面向連接的TCP協(xié)議,
30、以確保數(shù)據(jù)傳輸?shù)臏?zhǔn)確性和順序。</p><p> (2)原始套接字(SOCK_RAM):允許直接訪問(wèn)底層協(xié)議,功能強(qiáng)大,但不太方便使用,主要用于一些協(xié)議的開(kāi)發(fā)。</p><p> ?。?)數(shù)據(jù)報(bào)套接字(為SOCK_DGRAM):通過(guò)獨(dú)立傳輸?shù)臄?shù)據(jù)包,是無(wú)序的,不保證可靠,無(wú)差錯(cuò),它定義了一個(gè)連接為導(dǎo)向的服務(wù),使用數(shù)據(jù)報(bào)協(xié)議UDP。</p><p> Socket
31、編程使用客戶機(jī)/服務(wù)器模式。因此,分為服務(wù)器端編程和客戶端編程兩部分。每一個(gè)Scoket用一個(gè)半相關(guān)(協(xié)議,本地地址,端口)來(lái)表示,Scoket也有一個(gè)功能類似于打開(kāi)文件的函數(shù),該函數(shù)返回一個(gè)整數(shù)socket描述符,通過(guò)Scoket建立數(shù)據(jù)傳輸來(lái)實(shí)現(xiàn)目的。其流程圖如下圖2-3所示。</p><p><b> 服務(wù)器端</b></p><p> 客戶端
32、 </p><p> 圖2-3 客戶端/服務(wù)器Socket通信流程圖</p><p> 服務(wù)器端完成的功能是:處理某一可用端請(qǐng)求。因?yàn)槭嵌嗫蛻簦圆捎枚嗑€程,為每一個(gè)在線用戶分配一個(gè)客戶線程,實(shí)時(shí)處理每一個(gè)客戶的實(shí)時(shí)請(qǐng)求。</p><p> 服務(wù)器結(jié)構(gòu)如圖2-4所示。</p>
33、<p><b> 通訊</b></p><p> 線程a 客戶a</p><p> 線程b 客戶a</p><p> 線程c
34、 客戶a</p><p><b> 申請(qǐng)連接</b></p><p><b> 服務(wù)器程序 </b></p><p> 圖2-4 服務(wù)器系統(tǒng)結(jié)構(gòu)圖</p><p> ?。?)客戶端代理類(Agent):此類存儲(chǔ)對(duì)應(yīng)
35、客戶端的數(shù)據(jù),其包括登錄用戶名、Socket、互斥鎖(mutex)等。該Socket對(duì)象構(gòu)造一個(gè)輸入in和一個(gè)輸出流out,客戶代理通過(guò)這一對(duì)輸入輸出流與客戶端的Socket進(jìn)行數(shù)據(jù)交互。</p><p> ?。?)服務(wù)監(jiān)聽(tīng)器(ServerSocket):由主程序啟動(dòng),監(jiān)聽(tīng)服務(wù)器的服務(wù)端口,為每一個(gè)請(qǐng)求連接的客戶端建立一個(gè)客戶代理線程。</p><p> ?。?)客戶代理線程(AgentT
36、hread):實(shí)時(shí)通過(guò)監(jiān)聽(tīng)客戶端的事務(wù)請(qǐng)求,按照“對(duì)話流程”進(jìn)行解碼,根據(jù)解析得到的事務(wù)類型,交給客戶事務(wù)處理模塊進(jìn)行具體處理。</p><p> ?。?)客戶事務(wù)處理(Processor):處理客戶的事務(wù)請(qǐng)求。根據(jù)客戶的請(qǐng)求執(zhí)行相應(yīng)的數(shù)據(jù)處理和操作。通過(guò)引用用戶列表中的客戶代理發(fā)送消息。事務(wù)處理模塊引用客戶代理對(duì)象時(shí),必須進(jìn)行申請(qǐng)操作(wait()),之后釋放資源。改模塊根據(jù)事務(wù)類型,進(jìn)行轉(zhuǎn)發(fā)信息、注冊(cè)用戶、注
37、銷用戶。</p><p> (5)用戶列表(Vector):存儲(chǔ)每一個(gè)登錄客戶的客戶代理(Agent),使得事務(wù)處理模塊可以引用各個(gè)客戶代理進(jìn)行事務(wù)處理。</p><p><b> 2.3線程原理</b></p><p> 多線程技術(shù)能夠很好地解決并發(fā)多任務(wù)問(wèn)題,提高資源的利用率和系統(tǒng)的整體性能,所以計(jì)算機(jī)的各個(gè)領(lǐng)域都對(duì)其進(jìn)行了研究,從不
38、同的角度實(shí)現(xiàn)或者增強(qiáng)了對(duì)多線程的支持。</p><p> 1.進(jìn)程和線程的關(guān)系</p><p> 進(jìn)程是系統(tǒng)分配資源的基本單位,具有動(dòng)態(tài)性、并發(fā)性、和獨(dú)立性,進(jìn)程在自己的地址空間上運(yùn)用,擁有各自獨(dú)立的資源。一個(gè)進(jìn)程包括代碼、數(shù)據(jù)、堆棧、文件I/O和信號(hào)表等。進(jìn)程間的關(guān)系如下圖2-5所示[3]。</p><p> PC寄存器
39、 PC寄存器</p><p> 代碼段 代碼段</p><p> 靜態(tài)數(shù)據(jù) 靜態(tài)數(shù)據(jù)</p><p> 動(dòng)態(tài)棧 動(dòng)態(tài)棧</p><p> 堆棧 堆棧
40、 </p><p> 圖2-5 進(jìn)程間關(guān)系圖</p><p> 為了解決多進(jìn)程調(diào)用在處理并行性任務(wù)時(shí)的不足,因此提出了線程概念。比如把進(jìn)程中的執(zhí)行代碼與資源分離,而在一個(gè)地址空間中可執(zhí)行多條指令流,每條執(zhí)行流就是一個(gè)線程。但是,線程目前還沒(méi)有一個(gè)嚴(yán)格而統(tǒng)一的定義,簡(jiǎn)單地講,線程就是程序中的單一順序執(zhí)行流。如下圖2-6所示。</p><p> 進(jìn)程
41、 線程1 線程2</p><p> 寄存器 寄存器</p><p><b> ……</b></p><p> 代碼段 堆棧 堆棧</p><p><b> 靜態(tài)數(shù)
42、據(jù)</b></p><p><b> 動(dòng)態(tài)棧</b></p><p> 圖2-6 程序中的單一順序執(zhí)行流</p><p> 線程是處理調(diào)度的基本單位,線程為維護(hù)自己的控制流而保存寄存器和堆棧。通過(guò)以上的分析可以看出多線程技術(shù)的優(yōu)點(diǎn):</p><p> ?。?)對(duì)于上下文的線程,線程之間越小,轉(zhuǎn)換成本小
43、,你可以節(jié)省一些不必要的開(kāi)銷;</p><p> ?。?)相同的進(jìn)程地址空間和系統(tǒng)資源線程之間共享,創(chuàng)建時(shí),不必復(fù)制進(jìn)程,與創(chuàng)建進(jìn)程相比較,減少開(kāi)銷;</p><p> ?。?)線程之間的通信比進(jìn)程開(kāi)銷小;</p><p> (4)由于線程共享資源少,支持多線程系統(tǒng)中的線程總數(shù)大大超過(guò)單線程進(jìn)程。</p><p> 進(jìn)程是資源分配的基本單
44、位,線程是CPU調(diào)度的基本單位,同一進(jìn)程內(nèi)的線程共享資源,這為單線程進(jìn)程短缺的提出了一個(gè)解決方案,對(duì)提高系統(tǒng)資源利用率有很重要的意義[4]。</p><p> 多線程在實(shí)現(xiàn)方式上可以分為內(nèi)核級(jí)多線程、用戶級(jí)多線程和混合級(jí)多線程。</p><p> ?。?)內(nèi)核級(jí)多線程:所有的現(xiàn)場(chǎng)由操作系統(tǒng)的內(nèi)核線程來(lái)生產(chǎn)和管理,如Windows NT,OS/2的,都支持多線程操作系統(tǒng);</p>
45、;<p> (2)用戶級(jí)多線程:這種方式是用線程庫(kù)的實(shí)現(xiàn)方式和調(diào)度線程,線程提供語(yǔ)言層次的機(jī)制,提供用戶級(jí)多線程有Pthread等;</p><p> ?。?)混合級(jí)多線程:內(nèi)核和用戶級(jí)同時(shí)提供多線程的支持,同時(shí)提供用戶映射用戶線程庫(kù)調(diào)度線程的內(nèi)核線程,是內(nèi)核線程調(diào)度運(yùn)行的核心,它是內(nèi)核級(jí)多線程和多用戶級(jí)別綜合線程?;旌霞?jí)多線程機(jī)制提供有Solaris2、Mach[5]。</p>&
46、lt;p> 2. 多線程的優(yōu)缺點(diǎn)</p><p> 多線程技術(shù)在使用時(shí)需要充分考慮它的優(yōu)缺點(diǎn)。而如何使用多線程技術(shù),何時(shí)避免用它,是我們需要掌握一項(xiàng)重要的技術(shù)[6]。多線程處理可以同時(shí)運(yùn)行多個(gè)線程。由于多線程應(yīng)用程序?qū)⒊绦騽澐殖啥鄠€(gè)獨(dú)立的任務(wù),因此可以在以下方面的性能顯著提高[7]:</p><p> ?。?)多線程技術(shù)能夠快速反應(yīng)程序,用戶界面,做其他工作的同時(shí)處于活動(dòng)狀態(tài);&
47、lt;/p><p> ?。?)也確定了每個(gè)任務(wù)的優(yōu)先順序,并優(yōu)化性能;</p><p> ?。?)處理當(dāng)前自由,你可以給其他任務(wù)的處理器時(shí)間的任務(wù);</p><p> (4)加工時(shí)間密集型任務(wù),可以定期給其他任務(wù)的處理器時(shí)間;</p><p> ?。?)可以隨時(shí)停止任務(wù)[8]。</p><p> 對(duì)于是否需要?jiǎng)?chuàng)建多個(gè)線
48、程,取決于各種因素。在以下情況下,最適合采用多線程處理:</p><p> ?。?)耗時(shí)或大量占用處理器的任務(wù)阻塞用戶界面操作;</p><p> (2)每個(gè)任務(wù)必須等待外部資源,如遠(yuǎn)程文件或互聯(lián)網(wǎng)連接;</p><p> 同樣的,多線程也存在許多缺點(diǎn),在考慮多線程時(shí)需要進(jìn)行充分的考慮。多線程的主要缺點(diǎn)包括:</p><p> 等待共享
49、資源將導(dǎo)致程序運(yùn)行速度較慢。這些共享資源主要是獨(dú)占性的資源;</p><p> 需要額外的線程來(lái)管理CPU開(kāi)銷。系統(tǒng)將帶來(lái)的使用線程的上下文切換開(kāi)銷。而這種負(fù)擔(dān)超過(guò)一定程度,多線程將使用一個(gè)單獨(dú)的線程來(lái)更新數(shù)組中的每個(gè)元素;</p><p> 線程死鎖,也就是說(shuō),很長(zhǎng)一段時(shí)間或資源競(jìng)爭(zhēng),線程死鎖等多線程癥狀;</p><p> 而公共變量讀或?qū)?。?dāng)多個(gè)線程需要
50、寫公共變量時(shí),后者往往會(huì)改變線程在線程上存儲(chǔ)的數(shù)據(jù),從而使前一個(gè)線程的參數(shù)被修改[9]。</p><p> 2.4 網(wǎng)絡(luò)通信原理</p><p> 隨著科技的發(fā)展,網(wǎng)絡(luò)走入我們的工作和家庭。OSI/RM模型定義了異種機(jī)連網(wǎng)的標(biāo)準(zhǔn)框架,為連接分散的“開(kāi)放”系統(tǒng)提供了基礎(chǔ)。它采用分層結(jié)構(gòu)技術(shù),將網(wǎng)絡(luò)通信功能分為7層,每層完成一個(gè)特定功能。從低到高分別為物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)
51、話層、表示層、應(yīng)用層。其主要功能[10]:</p><p> (1)物理層:建立,維護(hù)和拆除物理鏈路提供所需的機(jī)器和功能規(guī)格,提供傳輸介質(zhì)上非結(jié)構(gòu)化的傳輸碼流和物理鏈路故障檢測(cè)和指示;</p><p> ?。?)數(shù)據(jù)鏈路層:為無(wú)差錯(cuò)幀傳輸點(diǎn)對(duì)點(diǎn),和流量控制功能的網(wǎng)絡(luò)層實(shí)體;</p><p> ?。?)網(wǎng)絡(luò)層:傳輸層提供端至端交換網(wǎng)絡(luò)數(shù)據(jù)傳輸功能,使得路徑選擇,交換
52、,網(wǎng)絡(luò)傳輸擁擠收費(fèi)及其他細(xì)節(jié),傳輸層;及實(shí)體的建立,維護(hù)運(yùn)輸層結(jié)束與一個(gè)或多個(gè)條通信路徑,對(duì)無(wú)法恢復(fù)的錯(cuò)誤予以報(bào)告;</p><p> ?。?)傳輸層:為了提供一個(gè)透明的實(shí)體將變成可見(jiàn)的,可靠的數(shù)據(jù)傳輸服務(wù),以確保端到端的數(shù)據(jù)完整性,可以選擇在網(wǎng)絡(luò)層提供最適當(dāng)?shù)姆?wù),建立,維護(hù)和傳輸功能;</p><p> ?。?)會(huì)話層:實(shí)體相互合作,建立,維護(hù)和結(jié)束會(huì)話連接。完成通信過(guò)程,邏輯名稱和物
53、理名稱對(duì)應(yīng)對(duì)話提供管理服務(wù);</p><p> (6)表示層:為其提供可以解釋所交換信息含義的服務(wù);</p><p> ?。?)應(yīng)用層:提供用戶服務(wù)。</p><p> 而其工作原理圖如下圖2-7所示[11]。</p><p><b> 面向會(huì)話連接</b></p><p> 主機(jī)A
54、 中間結(jié)點(diǎn) 主機(jī)B</p><p> 圖2-7 信息流動(dòng)方向圖</p><p> 3 Socket應(yīng)用程序開(kāi)發(fā)</p><p> 3.1 Windows Mobile簡(jiǎn)介</p><p> Windows Mobile是由微軟公司提供的先進(jìn)的移動(dòng)設(shè)備操作系統(tǒng),基Windows Mobile
55、 的 Pocket PC Phone Edition 和 Smartphone不僅為消費(fèi)者提供了熟悉并且可以自定義的用戶體驗(yàn),同時(shí)也為企業(yè)用戶提供了一個(gè)可擴(kuò)展的平臺(tái),增加新的銷售收入并帶動(dòng)業(yè)務(wù)增長(zhǎng)。</p><p> 目前,移動(dòng)用戶對(duì)數(shù)據(jù)信息訪問(wèn)的需求明顯增長(zhǎng)。企業(yè)單位一直都在促使自身經(jīng)營(yíng)的數(shù)據(jù)信息供給更多用戶訪問(wèn),包括Internet在內(nèi)的新型數(shù)據(jù)源的訪問(wèn)。這在PC機(jī)上已經(jīng)成為可能。但在選擇掌上設(shè)備企業(yè)方案時(shí)
56、,必須考慮數(shù)據(jù)是否安全,連接點(diǎn)是否受限制,以及可選的軟件、硬件、外設(shè)和服務(wù)是否充足等因素[12]。</p><p> 3.2 Visual Studio 開(kāi)發(fā)環(huán)境介紹</p><p> Visual Studio 97 是最早的 Visual Studio 版本。包含有面向 Windows 開(kāi)發(fā)使用的 Visual Basic 5.0、Visual C++ 5.0,面向 Java 開(kāi)發(fā)
57、的 Visual J++ 和面向數(shù)據(jù)庫(kù)開(kāi)發(fā)的 Visual FoxPro,還包含有創(chuàng)建 DHTML (Dynamic HTML) 所需要的 Visual InterDev。1998 年,微軟公司發(fā)布了 Visual Studio 6.0。所有開(kāi)發(fā)語(yǔ)言的開(kāi)發(fā)環(huán)境版本均升至 6.0。這也是 Visual Basic 最后一次發(fā)布,從下一個(gè)版本開(kāi)始,Microsoft Basic 進(jìn)化成了一種新的面向?qū)ο蟮恼Z(yǔ)言:Microsoft Basic
58、 NET。</p><p> Visual Studio 2008 在三個(gè)方面為開(kāi)發(fā)人員提供了關(guān)鍵改進(jìn):突破性的用戶體驗(yàn)、快速應(yīng)用開(kāi)發(fā)、高效的團(tuán)隊(duì)協(xié)作。</p><p> 突破性的用戶體驗(yàn)。Visual Studio 2008提供的最新平臺(tái)的密切聯(lián)系,加快開(kāi)發(fā)應(yīng)用程序創(chuàng)建新的工具,其中包括Web,Windows Vista中的Office 2007,SQL Server 2008和Wi
59、ndows Server 2008平臺(tái)。對(duì)于Web,ASP.NET的AJAX和其他新技術(shù)使開(kāi)發(fā)人員能夠快速創(chuàng)建更有效,更具交互性,更個(gè)性化的新一代Web體驗(yàn)。</p><p> 快速應(yīng)用開(kāi)發(fā)。為了幫助開(kāi)發(fā)人員迅速創(chuàng)建先進(jìn)的軟件,Visual Studio 2008提供改進(jìn)的語(yǔ)言和數(shù)據(jù)功能。 Visual Studio 2008還使開(kāi)發(fā)人員能夠創(chuàng)建從相同的開(kāi)發(fā)環(huán)境創(chuàng)建.NET框架版本的應(yīng)用程序。開(kāi)發(fā)建設(shè).NET框
60、架2.0,3.0或3.5的應(yīng)用程序,這意味著他們可以在同一環(huán)境中支持各種各樣的項(xiàng)目[13]。 </p><p> 3. 高效的團(tuán)隊(duì)協(xié)作。Visual Studio 2008中幫助開(kāi)發(fā)團(tuán)隊(duì)擴(kuò)大加強(qiáng)協(xié)作和完善的服務(wù),包括幫助數(shù)據(jù)庫(kù)專業(yè)人士,和圖形設(shè)計(jì)人員加入到開(kāi)發(fā)流程的工具[14]。</p><p> Visual Studio 2008 提供了高級(jí)開(kāi)發(fā)工具、調(diào)試功能、數(shù)據(jù)庫(kù)功能和創(chuàng)新等功
61、能,幫助在各種平臺(tái)上快速創(chuàng)建當(dāng)前最先進(jìn)的應(yīng)用程序。Visual Studio 2008 包括各種增強(qiáng)功能,為開(kāi)發(fā)人員提供了所有相關(guān)的工具和框架支持,幫助創(chuàng)建引人注目的、令人印象深刻并支持 AJAX 的 Web 應(yīng)用程序[15]。</p><p> 3.3 網(wǎng)絡(luò)連接的建立</p><p> 一般情況下,我們都會(huì)使用Windows Mobile設(shè)備上的WiFi模塊來(lái)接入Access Nod
62、e,從而達(dá)到上網(wǎng)的目的。我們通過(guò)掃描當(dāng)前的無(wú)線環(huán)境,發(fā)現(xiàn)周圍的AP接入點(diǎn),顯示他們的名字、MAC地址、信號(hào)強(qiáng)度(RSSI)、WiFi信道以及是否需要密碼等信息。那么,我們?nèi)绾卫肳iFi來(lái)建立設(shè)備與設(shè)備之間的連接呢?其實(shí)就是所謂的Ad-hoc網(wǎng)絡(luò)(或者說(shuō)是點(diǎn)對(duì)點(diǎn)/P2P)如何在Windows Mobile設(shè)備上來(lái)建立的問(wèn)題。</p><p> 如果說(shuō)是在Windows Mobile設(shè)備上建立點(diǎn)對(duì)點(diǎn)的連接,那Bl
63、uetooth技術(shù)也是可以實(shí)現(xiàn)的。的確,利用Bluetooth建立設(shè)備與設(shè)備之間的連接確實(shí)是許多移動(dòng)設(shè)備上的主流。但是,Bluetooth與WiFi相比,其帶寬的劣勢(shì)比較明顯,而且傳輸距離也沒(méi)有WiFi遠(yuǎn)。當(dāng)然,一般來(lái)說(shuō),WiFi的功耗是要比Bluetooth大的,但是在某些應(yīng)用場(chǎng)景下,我們側(cè)重的是帶寬和距離。因此,從以上分析來(lái)看,利用WiFi在Windows Mobile設(shè)備上建立點(diǎn)對(duì)點(diǎn)的連接,還是具備應(yīng)用意義的。</p>
64、<p> 那么,如何在Windows Mobile上來(lái)建立Ad-hoc網(wǎng)絡(luò)呢?下面以Windows Mobile 2003se for Pocket PC和Windows Mobile 6 Professional為例,一步一步給出配置步驟。</p><p> 首先,確定以Windows Mobile 2003se for Pocket PC設(shè)備為Server,Windows Mobile 6
65、Professional設(shè)備為Client。打開(kāi)WiFi,然后點(diǎn)擊設(shè)置->添加新的,這里設(shè)置網(wǎng)絡(luò)名稱為“MyPPCNet”,并選中“這是設(shè)備至設(shè)備(特定)連接”,如下圖3-1所示。</p><p> 圖3-1 添加新的WiFi網(wǎng)絡(luò)</p><p> 在網(wǎng)絡(luò)密鑰中,選擇驗(yàn)證已打開(kāi),數(shù)據(jù)加密已禁用或者自行選擇數(shù)據(jù)加密。設(shè)置完成后,點(diǎn)擊“OK”,在無(wú)線網(wǎng)絡(luò)中,出現(xiàn)了“MyPPCNet
66、”,點(diǎn)擊它,在出來(lái)的右鍵菜單中,選擇“連接”,使得該網(wǎng)絡(luò)處于“連接”狀態(tài),如下圖3-2所示。</p><p> 圖3-2 網(wǎng)絡(luò)密鑰設(shè)置</p><p> Server端設(shè)置完以后,我們轉(zhuǎn)向Client端,跟設(shè)置Server端一樣,打開(kāi)無(wú)線網(wǎng)絡(luò),然后在設(shè)置->連接中選擇“WiFi”,系統(tǒng)會(huì)列出一堆掃描到的無(wú)線網(wǎng)絡(luò),從中我們可以發(fā)現(xiàn)剛剛在Server端建立的“MyPPCNet”,如
67、下圖3-3所示。</p><p> 圖3-3 打開(kāi)無(wú)線網(wǎng)絡(luò)進(jìn)行掃描</p><p> 在Client端設(shè)置“MyPPCNet”時(shí),要根據(jù)Server端的設(shè)置來(lái)做,尤其是身份驗(yàn)證和數(shù)據(jù)加密等選項(xiàng),如下圖3-4所示。</p><p> 圖3-4 加入WiFi網(wǎng)絡(luò)圖</p><p> 經(jīng)過(guò)一點(diǎn)時(shí)間,就可以發(fā)現(xiàn)“MyPPCNet”處于連接
68、狀態(tài)了,我們還可以查到對(duì)應(yīng)的MAC地址、模式、信道等信息,如下圖3-5所示。</p><p> 圖3-5 WiFi網(wǎng)絡(luò)信息</p><p> 至此,Server端和Client端之間的Ad-hoc網(wǎng)絡(luò)已經(jīng)建立[16]。</p><p> 3.4.設(shè)備間的文件傳輸開(kāi)發(fā)</p><p> 在上段3.3節(jié)中,講述了利用WiFi在Windo
69、ws Mobile上建立Ad-hoc網(wǎng)絡(luò)的方法。由于Ad-hoc網(wǎng)絡(luò)建立了點(diǎn)對(duì)點(diǎn)的無(wú)線鏈接,因其具有方便、靈活、可配置的特點(diǎn),所以不用接入點(diǎn)就能夠?qū)崿F(xiàn)設(shè)備之間的互聯(lián)。并且講述了建立點(diǎn)對(duì)點(diǎn)的WiFi無(wú)線鏈接后,Windows Mobile設(shè)備之間利用Socket來(lái)實(shí)現(xiàn)消息的實(shí)時(shí)發(fā)送與接收?,F(xiàn)在在建立點(diǎn)對(duì)點(diǎn)的WiFi無(wú)線鏈接后,將進(jìn)行Windows Mobile設(shè)備之間利用Socket來(lái)實(shí)現(xiàn)文件傳輸。 </p><p&g
70、t; 3.4.1 新建工程</p><p> 1. 應(yīng)用程序分為Server端和Client端,這里只是實(shí)現(xiàn)了簡(jiǎn)單的文件傳輸功能,并沒(méi)有涉及深入,如斷點(diǎn)續(xù)傳功能。在Server和Client建立連接以后,在Server端將用戶選擇的文件傳輸給Client端,然后就結(jié)束傳輸。 </p><p> 2. 開(kāi)發(fā)環(huán)境為Visual Studio 2008 + Windows Mobile 2
71、003 for Pocket PC SDK + Windows Mobile 6 Pro SDK,使用MFC來(lái)開(kāi)發(fā)。 </p><p> 3. 新建項(xiàng)目的時(shí)候,在Advanced Features選項(xiàng)中,選中Windows sockets,以添加對(duì)Socket的支持。</p><p> 4. 在Server端和Client端的頭文件中,加入文件信息的結(jié)構(gòu)體:</p>&l
72、t;p> typedef struct _SOCKET_STREAM_FILE_INFO {</p><p> TCHAR szFileTitle[128]; //文件的標(biāo)題名</p><p> DWORD dwFileAttributes; //文件的屬性</p><
73、;p> FILETIME ftCreationTime; //文件的創(chuàng)建時(shí)間</p><p> FILETIME ftLastAccessTime; //文件的最后訪問(wèn)時(shí)間</p><p> FILETIME ftLastWriteTime; //文件的最
74、后修改時(shí)間</p><p> DWORD nFileSizeHigh; //文件大小的高位雙字</p><p> DWORD nFileSizeLow; //文件大小的地位雙字</p><p> DWORD dwReserbed0;
75、 //保留</p><p> DWORD dwReserved1; //保留</p><p> } SOCKET_STREAM_FILE_ONFO,* PSOCKET_STREAM_FILE_INFO;</p><p> 3.4.2 服務(wù)器端</p><
76、p> 5. 在Server端添加按鈕,在按鈕的點(diǎn)擊事件中,讓用戶選擇本地文件,然后發(fā)送給Client端。在Client端添加按鈕和Server端的IP地址輸入框,在輸入Server端的IP地址后,點(diǎn)擊按鈕,然后接收Server端發(fā)送過(guò)來(lái)的文件。</p><p> 6. 這里使用的是CSocket來(lái)進(jìn)行通信.CSocket里面的方法是阻塞式的,所以在發(fā)送、接收較大文件的時(shí)候,給用戶的感覺(jué)就是死機(jī)一樣,為了
77、能夠給用戶進(jìn)行提示,需要加入發(fā)送文件的進(jìn)度條。那么如何來(lái)實(shí)現(xiàn)文件傳輸進(jìn)度條呢?因?yàn)槲覀兪欠侄芜M(jìn)行傳輸?shù)模疵看伟l(fā)送1024個(gè)Bytes,而文件的總大小是可知的。所以,在發(fā)送或者接收文件內(nèi)容的時(shí)候,可以進(jìn)行計(jì)數(shù),從而知道完成的百分比,把相關(guān)信息顯示在進(jìn)度條上。(注意:這里只用到了文件大小的低位雙字)</p><p> 7. 關(guān)鍵代碼如下:</p><p><b> Server
78、端:</b></p><p> UINT dwRead=0;</p><p> while(dwRead<StreamFileInfo.nFileSizeLow)</p><p><b> {</b></p><p> byte* data = new byte[1024];</p>
79、<p> UINT dw=myFile.Read(data, 1024);</p><p> sockRecv.Send(data, dw);</p><p> dwRead+=dw;</p><p> //set progress bar</p><p> myCtrl.SetPos(dwRead*100/Strea
80、mFileInfo.nFileSizeLow);</p><p><b> }</b></p><p> myFile.Close();</p><p><b> 3.4.3 客戶端</b></p><p> 客戶端主要進(jìn)行文件發(fā)送。關(guān)鍵代碼如下。</p><p>
81、 UINT dwRead = 0;</p><p> while(dwRead<StreamFileInfo.nFileSizeLow)</p><p><b> {</b></p><p> byte* data = new byte[1024];</p><p> memset(data,0,1024)
82、;</p><p> UINT dw=sockClient.Receive(data, 1024);</p><p> destFile.Write(data, dw);</p><p> dwRead+=dw;</p><p> //set progress bar</p><p> myCtrl.SetP
83、os(dwRead*100/StreamFileInfo.nFileSizeLow);</p><p><b> }</b></p><p> 8. 為了更好地提示用戶,在傳輸文件/接收文件過(guò)程中,以加入“系統(tǒng)忙”的提示,即用以下代碼對(duì)來(lái)實(shí)現(xiàn):</p><p> //set wait suesor</p><p>
84、 SetCursor(LoadCursor(NULL, IDC_WAIT));</p><p> //close wait sursor</p><p> SetCursor(NULL);</p><p> 3.4.4 應(yīng)用程序測(cè)試</p><p> 9. 代碼測(cè)試。利用WiFi在Windows Mobile上建立Ad-hoc網(wǎng)絡(luò)。
85、在Windows Mobile 2003se for Pocket PC設(shè)備上運(yùn)行Client端程序,在Windows Mobile 6 Professional設(shè)備上運(yùn)行Server端程序。</p><p> 如下圖3-6所示,在客戶端輸入服務(wù)器端的IP地址,點(diǎn)擊“Receive File”,準(zhǔn)備接收文件。</p><p> 圖3-6 Client端程序界面</p>
86、<p> 在服務(wù)器端,選擇需要發(fā)送的文件,進(jìn)行打開(kāi),如下圖3-7所示。</p><p> 圖3-7 Server端程序打開(kāi)文件界面</p><p> 服務(wù)器端發(fā)送文件時(shí),會(huì)通過(guò)進(jìn)度條進(jìn)行指示,如下圖3-8所示。</p><p> 圖3-8 Server端文件發(fā)送完畢界面</p><p> 同樣,在客戶端接收文件時(shí),也會(huì)
87、有進(jìn)度條指示,如下圖3-9所示。</p><p> 圖3-9 Client端文件接收完畢界面</p><p> 用資源管理器瀏覽客戶端的文件,可以在設(shè)備根目錄下找到。如圖3-10所示。</p><p> 圖3-10 Client端接收文件位置</p><p><b> 4 結(jié)論</b></p>
88、<p> 本論文研究了基于Socket技術(shù)的Windows Mobile設(shè)備間的文件傳輸。首先介紹了關(guān)于Socket技術(shù)的發(fā)展前景;其次,對(duì)本課題的多線程技術(shù)、網(wǎng)絡(luò)通信和Socket技術(shù)進(jìn)行了深入介紹,并根據(jù)Windows Mobile設(shè)備的特點(diǎn),保留有用的一部分用于應(yīng)用程序的編譯;最后,利用Visual Studio 2008完成應(yīng)用程序的開(kāi)發(fā),通過(guò)建立設(shè)備連接,完成程序的測(cè)試。</p><p>
89、 應(yīng)用程序分為2個(gè)部分:客戶端和服務(wù)器端。完成客戶端和服務(wù)器端的設(shè)置后,進(jìn)行掃描。服務(wù)器端確定目標(biāo)IP地址進(jìn)行發(fā)送文件,客戶端接收文件,從而達(dá)到設(shè)備間的文件傳輸。在傳輸過(guò)程中,使用CSocket來(lái)進(jìn)行通信,CSocket里面的方法是阻塞式的,所以在發(fā)送、接收較大文件的時(shí)候,傳輸進(jìn)度較慢,因此在這里加入發(fā)送文件的進(jìn)度條。經(jīng)過(guò)測(cè)試,得到了較好的結(jié)果。</p><p><b> 參考文獻(xiàn)</b>
90、</p><p> [1] 王洪富. 電信級(jí)Socket通信框架的研究與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué),計(jì)算機(jī)應(yīng)用,2004.</p><p> [2] 王雷,王子淘.基于Linux的Socket網(wǎng)絡(luò)編程的性能優(yōu)化[J].電子設(shè)計(jì)工程 2009,17(9):56-58.</p><p> [3] 方淳.多線程并行處理技術(shù)在五坐標(biāo)數(shù)控加工仿真中的應(yīng)用[D].西
91、安:西北工業(yè)大學(xué),2006.</p><p> [4] 賈廣雷,劉培玉,耿長(zhǎng)欣等.多線程技術(shù)及其在串口通信中的應(yīng)用[J].計(jì)算機(jī)工程,2003,29(1):246-250.</p><p> [5] 任保獻(xiàn),馬磊.基于C/S的遠(yuǎn)程控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].安陽(yáng)師范學(xué)院學(xué)報(bào),2005,5(2):15-30.</p><p> [6] 駱斌,費(fèi)翔林. 多線程技術(shù)
92、的研究與應(yīng)用[J]. 計(jì)算機(jī)研究與發(fā)展,2000,37(4):407-410.</p><p> [7] 陳根永,程亮,郭含等. 基于多線程技術(shù)提高電量采集的實(shí)時(shí)性[J].微計(jì)算機(jī)信息,2009,25(25):87-88.</p><p> [8] 李春華等.多線程的軟件實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),1999,4:45-54.</p><p> [9] 孔昊,
93、胡銀保. 線程在基于Socket通信中的應(yīng)用[J].蘭州工業(yè)高等專科學(xué)校學(xué)報(bào),2010,17(1):23-26.</p><p> [10] 馮浩,蘇磊.基于TCP的多線程網(wǎng)絡(luò)文件傳輸系統(tǒng)[J].電子信息學(xué)院通信工程,2008,7(8):93-94.</p><p> [11] 葛洪源.網(wǎng)絡(luò)通信原理淺析[J].科技情報(bào)開(kāi)發(fā)與經(jīng)濟(jì),2003,13(8):56-69.</p>
94、<p> [12] 邵森.計(jì)算機(jī)訪問(wèn)控制技術(shù)研究綜述[J].中國(guó)新技術(shù)新產(chǎn)品,2009,3(2):41-50.</p><p> [13]陳在平,彭登峰.基于Visual Studio.NET的OPC客戶端的研究與實(shí)現(xiàn)[J].自動(dòng)化制造,2008,30(12):23-35.</p><p> [14] Young Hwan Choi,Sun Yeong Choi. Ass
95、essment of socket weld integrity in pipings[J].Journal of loss prevention in the process industries,2009,22(6):23-28.</p><p> [15] L.E. Caligiuri, L.N.Eiselstein. Proper Design and Fabrication of Socket Wel
96、ds for Use in Sour Service [J].Materials Science Forum, 2010, 638(4):75-80.</p><p> [16] Embedded Your Life[EB/OL],2011,5.</p><p> http://www.cnblogs.com/dearsj001
97、 </p><p> 附錄:應(yīng)用程序源代碼</p><p> 客戶端(TCPFileClient)</p><p> // TCPFileClient.cpp : Defines the class behaviors for the application.</p><p><
98、b> //</b></p><p> #include "stdafx.h"</p><p> #include "TCPFileClient.h"</p><p> #include "TCPFileClientDlg.h"</p><p> #ifde
99、f _DEBUG</p><p> #define new DEBUG_NEW</p><p><b> #endif</b></p><p> // CTCPFileClientApp</p><p> BEGIN_MESSAGE_MAP(CTCPFileClientApp, CWinApp)</p>
100、;<p> END_MESSAGE_MAP()</p><p> // CTCPFileClientApp construction</p><p> CTCPFileClientApp::CTCPFileClientApp()</p><p> : CWinApp()</p><p><b> {</
101、b></p><p> // TODO: add construction code here,</p><p> // Place all significant initialization in InitInstance</p><p><b> }</b></p><p> // The one a
102、nd only CTCPFileClientApp object</p><p> CTCPFileClientApp theApp;</p><p> // CTCPFileClientApp initialization</p><p> BOOL CTCPFileClientApp::InitInstance()</p><p>
103、<b> {</b></p><p> #if defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP)</p><p> // SHInitExtraControls should be called once during your application's initializatio
104、n to initialize any</p><p> // of the Windows Mobile specific controls such as CAPEDIT and SIPPREF.</p><p> SHInitExtraControls();</p><p> #endif // WIN32_PLATFORM_PSPC || WIN32_
105、PLATFORM_WFSP</p><p> if (!AfxSocketInit())</p><p><b> {</b></p><p> AfxMessageBox(IDP_SOCKETS_INIT_FAILED);</p><p> return FALSE;</p><p>&
106、lt;b> }</b></p><p> // Standard initialization</p><p> // If you are not using these features and wish to reduce the size</p><p> // of your final executable, you shoul
107、d remove from the following</p><p> // the specific initialization routines you do not need</p><p> // Change the registry key under which our settings are stored</p><p> // TODO
108、: You should modify this string to be something appropriate</p><p> // such as the name of your company or organization</p><p> SetRegistryKey(_T("Local AppWizard-Generated Applications&q
109、uot;));</p><p> CTCPFileClientDlg dlg;</p><p> m_pMainWnd = &dlg;</p><p> INT_PTR nResponse = dlg.DoModal();</p><p> if (nResponse == IDOK)</p><p>
110、<b> {</b></p><p> // TODO: Place code here to handle when the dialog is</p><p> // dismissed with OK</p><p><b> }</b></p><p> // Since the
111、 dialog has been closed, return FALSE so that we exit the</p><p> // application, rather than start the application's message pump.</p><p> return FALSE;</p><p><b> }&
112、lt;/b></p><p> Stdafx.h:代碼</p><p> // stdafx.h : include file for standard system include files,</p><p> // or project specific include files that are used frequently,</p&g
113、t;<p> // but are changed infrequently</p><p> #pragma once</p><p> #pragma comment(linker, "/nodefaultlib:libc.lib")</p><p> #pragma comment(linker, "/nod
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于socket技術(shù)的windows mobile設(shè)備間的文件傳輸工具開(kāi)發(fā)【開(kāi)題報(bào)告】
- 基于socket技術(shù)的windows mobile設(shè)備間的文件傳輸工具開(kāi)發(fā)【任務(wù)書】
- 基于socket技術(shù)的windows mobile設(shè)備間的實(shí)時(shí)消息工具開(kāi)發(fā)【畢業(yè)論文】
- 基于socket技術(shù)的windows mobile設(shè)備間的實(shí)時(shí)消息工具開(kāi)發(fā)【開(kāi)題報(bào)告】
- 基于socket技術(shù)的windows mobile設(shè)備間的實(shí)時(shí)消息工具開(kāi)發(fā)【任務(wù)書】
- 基于藍(lán)牙技術(shù)的windows mobile設(shè)備通信開(kāi)發(fā)【畢業(yè)論文】
- 基于opengl es技術(shù)的windows mobile設(shè)備文字圖形開(kāi)發(fā)【畢業(yè)論文】
- 畢業(yè)論文——基于android的ftp文件傳輸
- 畢業(yè)論文——基于android的ftp文件傳輸
- 畢業(yè)論文——基于android的ftp文件傳輸
- 網(wǎng)絡(luò)實(shí)時(shí)文件傳輸軟件的開(kāi)發(fā)【畢業(yè)論文】
- windows mobile 設(shè)備的短信防火墻開(kāi)發(fā)【畢業(yè)論文】
- windows mobile設(shè)備上的gps定位應(yīng)用開(kāi)發(fā)【畢業(yè)論文】
- windows mobile 設(shè)備的攝像頭應(yīng)用開(kāi)發(fā)【畢業(yè)論文】
- 畢業(yè)論文范文——java文件傳輸
- 基于windows mobile的zigbee探測(cè)儀開(kāi)發(fā)【畢業(yè)論文】
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文-基于android的ftp文件傳輸
- windows mobile 設(shè)備上的無(wú)線局域網(wǎng)管理器開(kāi)發(fā)【畢業(yè)論文】
- 畢業(yè)論文---基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于藍(lán)牙技術(shù)的windows mobile設(shè)備通信開(kāi)發(fā)【開(kāi)題報(bào)告】
評(píng)論
0/150
提交評(píng)論