版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、用多線程枝術(shù)實(shí)現(xiàn)W i n sock 編程王廣偉李維釗摘要本文在對W indow s 網(wǎng)絡(luò)(W inSock 編程作一般性介紹的基礎(chǔ)上,對在V isual C +6.0環(huán)境下的如何進(jìn)行網(wǎng)絡(luò)編程以及如何使用多線程進(jìn)行網(wǎng)絡(luò)編程作了介紹和示范。通過本文,讀者可以掌握簡單的網(wǎng)絡(luò)編程,并學(xué)會使用多線程來進(jìn)行網(wǎng)絡(luò)編程。關(guān)鍵詞網(wǎng)絡(luò)套接字阻塞多線程一、W i ndsock 簡介W insock (W indow s Sockets 是微軟的窗口系統(tǒng)結(jié)構(gòu)(WO SA 的一部分。它是基于UN I X 上的BerKeley Softw are D istributi on (BSD 版本的套接字,并為w indow
2、 s 進(jìn)行了專門的擴(kuò)展。 Internet 是在UN I X 系統(tǒng)上發(fā)展起來的,在UN I X 上有許多成熟的編程接口,其中最通用的是一種叫做Sockets (套接字的接口。套接字的實(shí)質(zhì)是通信端點(diǎn)的一種抽象,它提供一種發(fā)送和接收數(shù)據(jù)的機(jī)制。在1991年前后,許多網(wǎng)絡(luò)軟件商都在加緊研制W indow s 下的TCP IP 通迅組件,為了能使這些組件有一定的標(biāo)準(zhǔn),降低開發(fā)難度,他們決定為W indow s 開發(fā)一套標(biāo)準(zhǔn)的、通用的TCP IP 編程接口,并使之類似于UN I X 下的Sockets ,這一接口迅速被所有的軟件商所接受,包括M icro soft 與I BM 。到1994年,它被正式制
3、定成一項(xiàng)標(biāo)準(zhǔn),稱為W indow s Sockets 或稱W I N SOCK ,并通過C 語言的動態(tài)連接庫方式提供給用戶及軟件開發(fā)者。我們現(xiàn)在看到的W indow s 下的Internet 軟件都是在W I N SOCK 基礎(chǔ)下開發(fā)的。隨著W indow s 95推出,W I N SOCK 已經(jīng)被正式集成到了W indow s 系統(tǒng)中,同時(shí)包括了16位與32位的編程接口。W I N SOCK 的實(shí)現(xiàn)一般都由兩部分組成:開發(fā)組件和運(yùn)行組件。開發(fā)組件是供程序員開發(fā)W I N SOCK 應(yīng)用程序使用的,它包括介紹W I N SOCK 實(shí)現(xiàn)的文檔、W I N SOCK 應(yīng)用程序接口(A P I 引入
4、庫和一些頭文件。運(yùn)行組件是W I N SOCK 應(yīng)用程序接口的動態(tài)連接庫(DLL ,文件名為W I N SOCK .DLL 應(yīng)用程序在執(zhí)行時(shí)通過裝入它來實(shí)現(xiàn)網(wǎng)絡(luò)通信功能。最初,W I N SOCK 1.1版是專門為Internet 設(shè)計(jì)的,現(xiàn)在的2.x 版已經(jīng)不再限于Internet 和TCP IP 協(xié)議,它通過提供擴(kuò)展的SP I 編程接口,把自己的應(yīng)用范圍擴(kuò)大到現(xiàn)存的和正在出現(xiàn)的各種網(wǎng)絡(luò)和協(xié)議,包括PSTN 、ISDN 、無線網(wǎng)、所有的局域網(wǎng)協(xié)議、異步傳輸模式A TM 等等,并且允許應(yīng)用程序?qū)λ⑦B接的可靠性、冗余度和帶寬進(jìn)行控制。所以掌握了W I N SOCK 編程,就等于掌握了W in
5、dow s 環(huán)境下網(wǎng)絡(luò)編程的一把鑰匙。W indow s 開網(wǎng)絡(luò)編程的規(guī)范W indow s Sockets 。這套規(guī)范是w indow s 下得到廣泛應(yīng)用的、開放的、支持多種協(xié)議的網(wǎng)絡(luò)編程接口。W indow s Sockets 規(guī)范定義并記錄了如何使用A P I 與Internet 協(xié)議族(IPS ,通常我們指的是TCP IP 連接,尤其要指出的是所有的W indow s Sockets 實(shí)現(xiàn)都支持流套接口和數(shù)據(jù)報(bào)套接口。應(yīng)用程序調(diào)用W indow s Sockets 的A P I 實(shí)現(xiàn)相互之間的通訊。W indow s Sockets 又利用下層的網(wǎng)絡(luò)通訊協(xié)議功能和操作系統(tǒng)調(diào)用實(shí)現(xiàn)實(shí)際的
6、通訊工作。它們之間的關(guān)系如圖1。二、套接字的兩種形式套接字是通信端點(diǎn)的一種抽象,它提供一種發(fā)送和接收數(shù)據(jù)的機(jī)制,在W indow s 套接字中1。它有兩種形式:數(shù)據(jù)報(bào)套接字(D atagram Socket 和流式套接字(Stream Socket .流式套接口采用的是傳輸控制協(xié)議TCP ,它提供了雙向的,有序的,無重復(fù)并且無記錄過界的數(shù)據(jù)流服務(wù),在這種方式下,兩個(gè)通訊的應(yīng)用程序之間先要建立一種虛擬的連接,流方式的特點(diǎn)的是:通訊可靠,對數(shù)據(jù)有校驗(yàn)和重發(fā)的機(jī)制,通常用來作數(shù)據(jù)文件的傳輸如ftp 、telnet 等,適合于大量數(shù)據(jù)的傳輸。數(shù)據(jù)報(bào)套接口采用的是用戶數(shù)據(jù)報(bào)協(xié)議UD P ,它建立在李維釗
7、山東大學(xué)電子工程系濟(jì)南250100王廣偉山東大學(xué)電子工程系碩士研究生濟(jì)南250100IP 協(xié)議上,提供無連接數(shù)據(jù)報(bào)傳輸,支持雙向的數(shù)據(jù)流,但并不保證是可靠,有序,無重復(fù)和。也就是說,一個(gè)從數(shù)據(jù)報(bào)套接口接收信息的進(jìn)程有可能發(fā)現(xiàn)信息重復(fù)了,或者和發(fā)出時(shí)的順序不同。數(shù)據(jù)報(bào)套接口的一個(gè)重要特點(diǎn)是它保留的記錄邊界,對于這一特點(diǎn),數(shù)據(jù)報(bào)套接口采用了與現(xiàn)在許多包交換網(wǎng)絡(luò)(例如以太網(wǎng)非常類似的模型,數(shù)據(jù)報(bào)文方式由于取消了重發(fā)校驗(yàn)機(jī)制,能夠達(dá)到較高的通訊速率,可以用作一些對數(shù)據(jù)可靠性要求不高的通訊,如實(shí)時(shí)的語音、圖像轉(zhuǎn)送、廣播消息等。是使用流式套接字還是使用數(shù)據(jù)報(bào)套接字,以通信效率影響較大。在編程中,流式套接字
8、與數(shù)據(jù)報(bào)套接字是有區(qū)別的。在流式套接字中,服務(wù)器首先啟動,通過調(diào)用socket (建立一個(gè)套接口。然后調(diào)用bind (將該套接口和本地網(wǎng)絡(luò)地址聯(lián)系在一起,再調(diào)用listen (使套接口做好偵聽的準(zhǔn)備,并規(guī)定它的請求隊(duì)列的長度,之后就調(diào)用accep t (來接收連接,客戶在建立套接口后就可調(diào)用connect (和服務(wù)器建立連接,連接一旦建立,客戶機(jī)和服務(wù)器之間就可以通過調(diào)用read (和w rite (來發(fā)送和接收數(shù)據(jù)。最后,待數(shù)據(jù)傳送結(jié)束后,雙方調(diào)用clo se (關(guān)閉套接口。如圖3所示。與流式套接字不同的是,在數(shù)據(jù)報(bào)套接字中,服務(wù)器不調(diào)用accep t (,客戶機(jī)不調(diào)用connect (。在
9、發(fā)送數(shù)據(jù)之前,客戶機(jī)和服務(wù)器之間尚未建立完整相關(guān),無連接服務(wù)器通過sock 2et (和bind (建立了本地半相關(guān)。在傳輸數(shù)據(jù)之前,無連接的兩個(gè)端點(diǎn)已建立起來,分別以一個(gè)本地Socket 號和信宿端Socket 地址。于是,一個(gè)完整的相關(guān)在數(shù)據(jù)收發(fā)過程中動態(tài)地建立起來,實(shí)現(xiàn)無連接客戶和服務(wù)器彼此識別。如圖2所示。 三、通信的選擇方式在進(jìn)行網(wǎng)絡(luò)開發(fā)時(shí),必須對是使用阻塞方式(block ingmode 還是非阻塞方式(non -block ing mode 進(jìn)行選擇。在網(wǎng)絡(luò)通訊中,由于網(wǎng)絡(luò)擁擠或一次發(fā)送的數(shù)據(jù)量過大等原因,經(jīng)常會發(fā)生交換的數(shù)據(jù)在短時(shí)間內(nèi)不能傳送完,收發(fā)數(shù)據(jù)的函數(shù)因此不能返回,這種
10、現(xiàn)象叫作阻塞。W I N SOCK 對有可能阻塞的函數(shù)提供了兩種處理方式;阻塞和非阻塞方式。在阻塞方式(也稱同步方式下,收發(fā)數(shù)據(jù)的函數(shù)在被調(diào)用后一直要到傳送完畢或者出錯(cuò)才能返回。由于操作可能需要任意長的時(shí)間才能完成。于是問題就出現(xiàn)了。最明顯的一個(gè)例子就是recv (,這個(gè)函數(shù)會一直處于阻塞狀態(tài)直到收到對方系統(tǒng)發(fā)送的數(shù)據(jù)。對于非阻塞方式,函數(shù)被調(diào)用后立即返回,當(dāng)傳送完成后W I N SOCK 給程序發(fā)一個(gè)事先約定好的消息。在Berkeley套接口模型中,一個(gè)套接口的操作的缺省行為是阻塞方式的,除非程序員顯式地請求該操作為非阻塞方式。微軟強(qiáng)烈推薦程序員在盡可能的情況下使用非阻塞方式(異步方式的操作
11、。因此非阻塞方式的操作能夠更好地在非占先的W indow s環(huán)境下工作,程序員應(yīng)該在絕對必要的時(shí)候才采用阻塞方式。如果一個(gè)正在運(yùn)行某一阻塞操作的進(jìn)程收到一個(gè)W in2 dow s消息,那么應(yīng)用程序有可能試圖發(fā)出另一個(gè)W indow s Sockets調(diào)用,由于很難安全地處理這種情形,W indow s Sock2 ets規(guī)范不支持這種應(yīng)用程序的工作方式。在這種情況下,有兩個(gè)函數(shù)可以幫助程序員。W SA Is B lock ing(可以用來確定在該進(jìn)程上是否有阻塞的W indow s Sockets調(diào)用。W SA Cancel2 B look ingCall(可以用來取消在線的阻塞調(diào)用,如果有的
12、話。任何其他的W indow s Sockets函數(shù)如果在這種情況下被調(diào)用,則會失敗并返回錯(cuò)誤代碼W SA E I N PRO GR ESS。要強(qiáng)調(diào)的是,這一限制適用于所有阻塞和非阻塞的操作。為了避免阻塞操作的缺點(diǎn),我們可以使用多線程編程來實(shí)現(xiàn)。W I N SOCK通過異步選擇函數(shù)W SAA syncSelect(來實(shí)現(xiàn)非阻塞通訊。方法是由該函數(shù)指定某種網(wǎng)絡(luò)事件(如:有數(shù)據(jù)到達(dá),可以發(fā)送數(shù)據(jù),有程序請求連接等當(dāng)指定的網(wǎng)絡(luò)事件發(fā)生時(shí),由W I N SOCK對程序發(fā)送由程序事先約定的消息。程序中就可以根據(jù)這些消息做相應(yīng)的處理。格式如下: int W SAA syncSelect(SOCKET s,
13、HWND hw nd,un2 signed int wM sg,long lEventsockets在這個(gè)函數(shù)調(diào)用中被自動設(shè)成非阻塞方式,h W nd是接收W I N SOCK消息的窗口句柄,非阻塞方式下,wM sg是向窗口發(fā)出消息名稱,用戶可以任意定義。lEvent是被指定的網(wǎng)絡(luò)事件,有下面幾種選擇:FD-R EAD希望在Socket收到數(shù)據(jù)時(shí)收到消息;FD-W R IT E在可以發(fā)送數(shù)據(jù)時(shí)收到消息;FD-A CCEPT在有連接請求到達(dá)時(shí)收到消息;FD-CONN ECT在連接成功時(shí)收到消息;FD-CLO SE在連結(jié)關(guān)閉時(shí)收到的消息。當(dāng)被指定的事件發(fā)生時(shí),程序?qū)⑹盏较?消息的M SG 結(jié)構(gòu)體
14、中,M essage項(xiàng)就是被規(guī)定的消息名稱wM sg,lParam 項(xiàng)中的內(nèi)容就是與上面完全一樣的網(wǎng)線絡(luò)事件名稱。有一點(diǎn)要注意的是,在非阻塞狀態(tài)下,connect(函數(shù)的返回值都SOCKET-ERROR,表示有可能無法與遠(yuǎn)端的服務(wù)器建立連接。為了把這種情況與其他的錯(cuò)誤區(qū)分開,可以調(diào)用一個(gè)專門的函數(shù)W SA GetL astE rro r(來檢查產(chǎn)生SOCKET-ERROR 的原因,如該函數(shù)的返回值是W SA E WOULDBLOCK就表示上述情況。這時(shí),程序可以給用戶一個(gè)提示,表明程序正試圖與遠(yuǎn)方服務(wù)器建立連接,如果等待時(shí)間過長,用戶可以將其停止。四、多線程技術(shù)簡介當(dāng)在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)是較大的
15、數(shù)據(jù)塊進(jìn)(如圖象,常常會出現(xiàn)阻塞現(xiàn)象。為了避免出現(xiàn)這種情況,并且提高傳輸?shù)男?我們可以使用多線程來進(jìn)行網(wǎng)絡(luò)編程。32位W indow s環(huán)境下的W in32A P I提供了開發(fā)多線程應(yīng)用程序的接口函數(shù),并且V C+6.0提供的標(biāo)準(zhǔn)C庫也可以開發(fā)多線程應(yīng)用程序,但是更為經(jīng)常的是使用M FC類庫進(jìn)行多線程編程。M FC執(zhí)行兩種類型的線程,一種是工作線程(W o rker T h read;另一種是用戶界面線程(U ser-Interface T h read。這兩種類型都使用同一W in32A P I調(diào)用機(jī)制,而且V isual C+6.0的M FC庫提供的C W inT h read類是進(jìn)行多
16、線程編程的基礎(chǔ)。實(shí)際上,C W inA pp類就是一個(gè)用戶界面線程,它由C W inT h read類派生,用于應(yīng)用程序與用戶的交互。有兩種方法可以創(chuàng)建線程。M FC提供如下全局函數(shù)創(chuàng)建線程:A fxBeginT h read(,用A fxBeginT h read(可以創(chuàng)建一個(gè)線程,M FC提供兩個(gè)版本的A fxBeginT h read(分別用于創(chuàng)工作線程和用戶界面線程。該函數(shù)創(chuàng)建一個(gè)線程對象,并返回對象的指針(利用這個(gè)指針可以完成一些用戶想做的事情。另外,你也可以顯式地創(chuàng)建線程對象,這需要首先聲明線程對象,然后調(diào)用C W inT h read的成員函數(shù)C W inT h read:C r
17、eate T herad(函數(shù)創(chuàng)建線程,由于M FC區(qū)分兩種線程,因此創(chuàng)建線程的參數(shù)也是不同的,也正是不同的參數(shù)區(qū)分了不同的線程,這將在下面結(jié)合Sockets編程做詳細(xì)說明。五、在VC6.0中用多線程開發(fā)套接字程序在實(shí)際編程中,我們一般采用面向?qū)ο蠹夹g(shù),特別采用消息驅(qū)動機(jī)制實(shí)現(xiàn)多任務(wù)的W indow s編程思想,V C由于它的強(qiáng)大的功能而被廣泛采用。11用VC6.0開發(fā)套接字程序的基本步驟在V C+6.0中,我們可以用W indow s Sockets A P I來編寫網(wǎng)絡(luò)程序,更為普遍的是,我們使用M FC封裝的CA syncSocket和CSocket兩個(gè)類來進(jìn)行網(wǎng)絡(luò)編程,它把與套接字有關(guān)
18、的W indow s消息換為回調(diào)函數(shù),CA syncSocket類比CSocket更加面向低層,使用比較靈活,但它對編程人員的要求也高,需要對網(wǎng)絡(luò)了解的更多。CSocket是CA syncSocket的導(dǎo)出類,通過M FC中的CA rch ive類的對象提供了更高層次的抽象,它封裝了Socket實(shí)現(xiàn)中的許多細(xì)節(jié),并將Socket與A rch ive相結(jié)合,使用它與使用M FC中的文檔串行化協(xié)議相類似,使用便利。一般我們使用簡便的CSocket編程,其步驟如下:(1構(gòu)造套接字對象。(2使用該對象構(gòu)造基本的套接字,對于CSocket客戶端對象,使用缺省參數(shù)C reate;對于CSock2 et服務(wù)
19、器對象,應(yīng)指明一個(gè)端口號作為Greate的一個(gè)參數(shù),用于監(jiān)聽。(3建立客戶端CSocket,調(diào)用CA syncSocket:Con2 nect建立與服務(wù)器端的連接,服務(wù)器端套接字調(diào)用CA sync2 Socket:L isten監(jiān)聽,并在收到客戶端請求后調(diào)用CA sync2 Socket:A ccep t。(4構(gòu)造CSocketF ile對象,并使CSocket對象與之關(guān)聯(lián)。(5構(gòu)造CA rch ive對象,用于接收或發(fā)送數(shù)據(jù)。(6使用CA rch ive對象來進(jìn)行客戶端與服務(wù)器端的套接字通信。(7刪除CA rch ive,CSocketF ile,CSocket對象。流程圖如圖4所示: 21
20、回調(diào)函數(shù)的使用為了使網(wǎng)絡(luò)通信更加方便,CA syncSocket 和CSocket 提供了一些回調(diào)函數(shù)。主窗口通過調(diào)用這些回調(diào)函數(shù)來套接字的一些重要事件的來臨。這些回調(diào)函數(shù)有O nR eceive ,O n 2Send ,onConnect ,O nA ccep t ,O nC lo se ,它們可以通過在兩個(gè)類中重載得到。這兩個(gè)類僅僅是通過回調(diào)函數(shù)將消息轉(zhuǎn)化為通知,具體的如何響應(yīng)這些通知,還須我們自己來實(shí)現(xiàn)。vo id CR eceSocket :O nR eceive (int nE rro rCode CA syncSocket :O nR eceive (nE rro rCode ;R
21、 eceive (lpBuf ,int nBuf L en ,int nF lage =0如果自己的類繼承CA syncSocket ,為了使通信更加便利,必須重載這些回調(diào)函數(shù),如果自己的類繼承CSocket ,將由你根據(jù)情況自己決定是否重載它們。必須注意的是,CSocket 對象從不調(diào)用O nSend O nConnect 這兩個(gè)通知函數(shù),而只能調(diào)用Send 函數(shù)來發(fā)送數(shù)據(jù),直到發(fā)送完成有數(shù)據(jù)Send 對返回,同樣只能調(diào)用Connect 函數(shù)來進(jìn)行連接,當(dāng)完成連接時(shí)(成功或失敗Connect 將返回。31利用多線程來開發(fā)網(wǎng)絡(luò)通信CSocket 類的缺省方式阻塞方式,為了避免阻塞的種種缺點(diǎn),可
22、以使用多線程,可以在一個(gè)工作線程中處理數(shù)據(jù)的接收和發(fā)送,該工作線程可以在后臺運(yùn)行,套接字在工作線程中的阻塞不會影響主線程中的其他活動,這樣主線程可以處理主窗口的消息映射,下面結(jié)合一個(gè)實(shí)例說明如何創(chuàng)建、執(zhí)行一個(gè)套接字工作線程的過程,該線程創(chuàng)建一個(gè)套接字,然后與服務(wù)器(IP 為50進(jìn)行連接,連接成功后向服務(wù)器發(fā)送一些數(shù)據(jù)。U I N T SocketP roc (L PVO I D pParam CSendV iew 3pV iew =(CSendV iew 3pParam ;CSocket 3pSocket =new CSocket (;pSocket ->C re
23、ate (;構(gòu)造CSocket 對象 與服務(wù)器連接if (!pSocket ->Connect ("50"5050A fx M essageBox ("cantconnect to the distines !"構(gòu)造CSocketF ile對象,并使CSocket對象與之關(guān)聯(lián)。CSocketF ile3m-pF ile=new CSocketF ile(pSocket;構(gòu)造CA rch ive對象,用于發(fā)送數(shù)據(jù)。CA rch ive3m-pA rch iveO ut=new CA rch ive(m-pF ile, CA r
24、ch ive:STOR Eif(m-pA rch iveO ut!=NULL 發(fā)送數(shù)據(jù),其中m-sockdata是在視窗類中定義的一個(gè)結(jié)構(gòu), pM sg是該結(jié)構(gòu)中的一個(gè)指針變量pV iew->m-sockdata->pM sg->Serialize(3m-pA rch iveO utm-pA rch iveout->F lush(elsereturn O;在程序適當(dāng)?shù)牡胤?用A fxBeginT h read(SocketP roc, pV iew來執(zhí)行即可。除了使用工作線程外,還可以使用用戶界面線程來實(shí)現(xiàn),用戶界面線程增加了消息映射,在下面的例子中將會用到。而CA s
25、yncSocket類可以為了處理阻塞問題,不應(yīng)該設(shè)為阻塞方式,而應(yīng)使用異步方式。在異步方式中,調(diào)用會立即返回,用GetL astE rro r函數(shù)會獲取相應(yīng)的錯(cuò)誤代碼為W SA E2 WOULDBLOCK表示無連接可以接受,舉例說明,在異步方式中,在調(diào)用R eceive函數(shù)后,會得到W SA E WOULDBLOCK 的錯(cuò)誤信息,直到O nR eceive回調(diào)函數(shù)被調(diào)用以通知我們可以再次接收數(shù)據(jù)了。41使用多線程進(jìn)行套接字編程時(shí)應(yīng)注意同步問題在使用多線程技術(shù)進(jìn)行網(wǎng)絡(luò)編程時(shí),必須注意套接字對象的同步問題,可以使用線程同步機(jī)制來協(xié)調(diào)套接字對象的存取。如果在線程中創(chuàng)建了一個(gè)M FC窗口對象,這個(gè)M
26、FC對象不能在其他線程中使用,即對于套接字編程來說,一個(gè)套接字對象應(yīng)該僅僅用于單個(gè)線程,在兩個(gè)線程之間不能傳遞套接字對象。例如;服務(wù)器一般可以接受多個(gè)連接,它每接受一個(gè)連接,就創(chuàng)建一個(gè)線程用來處理連接。為達(dá)到這個(gè)目的,僅僅在這兩個(gè)線程中傳遞套接字對象的不夠的。雖然在兩個(gè)線程之間不能傳遞套接字對象,但我們可以在線程之間傳遞線程句柄。因此我們可以:(1把附加接受連接的線程的套接字對象上的套接字句柄分離出來。(2在兩個(gè)線程中傳遞套接字句柄。(3在處理套接字連接的線程中,把這個(gè)套接字句柄附加到套接字對象上。為了更好的說明以上方法,現(xiàn)將程序的部分列出:在主線程中創(chuàng)建監(jiān)聽線程的O nA ccep t函數(shù)v
27、o id CL istenSocket:O nA ccep t(int nE rro rCodeCA syncSocket soc; 用于接受連接請求而建的臨時(shí)對象A ccep t(soc; 接受請求 創(chuàng)建新線程并掛起(該線程是用戶界面線程CSockT h read3pT h read=(CSockT h read3A fxBe2 ginT h read(RUN T I M E-CLA SS(CSockT h read,THR EAD-PR I OR IT Y-NORM AL.O,CR EA T E-SU SPEND ED; 將套接字句柄從套接字對象中分離出來,并保存pT h read->
28、;m-hSocket=(SOCKETSOC.D etach(; 開始執(zhí)行新線程pT h read->R esum eT h read(;CA syncSocket:O nA ccep t(nE rro rCode;處理連接線程(即新線程的Init Instance函數(shù),BOOL CSockT h read:Init Instance( 把這個(gè)套接字句柄附加到新的套接字對象上, 這樣主線程的通知函數(shù)就能發(fā)送到新的線程中,在新的線程中處理m-socket,A ttach(m-hSocket;return TRU E;通過以上步驟,我們就可以用多線程處理網(wǎng)絡(luò)通信了。六、總結(jié)在開發(fā)電子教室系統(tǒng)過
29、程中,我們利用網(wǎng)絡(luò)編程實(shí)現(xiàn)了教師機(jī)和學(xué)生機(jī)之間的連續(xù)圖像的傳輸,傳輸效果相當(dāng)令人滿意。我們利用CA syncSocket和CSocket兩個(gè)類分別實(shí)現(xiàn)了圖象在網(wǎng)絡(luò)上傳輸。兩個(gè)類實(shí)現(xiàn)的效果相差無幾,不過由于CSocket類可以使用CA rch ive對象之間傳遞數(shù)據(jù),并且引入了多線程技術(shù)進(jìn)行網(wǎng)絡(luò)通信以避免阻塞,CSocket類完全可以滿足圖像通信的要求。由于客戶機(jī)和服務(wù)器程序的通信模塊都是用套接字開發(fā)的網(wǎng)絡(luò)通信程序,因此屏蔽了網(wǎng)絡(luò)層的復(fù)雜的結(jié)構(gòu)和協(xié)議,使應(yīng)用軟件能在各種網(wǎng)上運(yùn)行,而不必關(guān)心是何種網(wǎng)絡(luò)以及服務(wù)器或客戶機(jī)在網(wǎng)上的具體位置和數(shù)據(jù)傳送細(xì)節(jié)。參考文獻(xiàn)1曹方、馮忠義“基于客戶 服務(wù)器模式的S
30、ocket網(wǎng)絡(luò)編程”計(jì)算機(jī)工程,第25卷第2期2D avid Bennett“V isual C+5開發(fā)人員指南”(美機(jī)械工業(yè)出版社,西蒙與舒斯特國際出版公司,1998137141(收稿日期99年12月6日M icrocom puter Appl ica tion s Vol. 16, No. 5, 2000 ABSTRACTS & KEYWO RD S 微型電腦應(yīng)用2000 年第 16 卷第 5 期 KeywordsOL T P m iddlew a re C lien t Server A Solution to Partition ing Problem s Using Neur
31、a l Network P24 Z hang J iongm in W u W enjuan T ao Z en le (D ep a rtm en t of C om p u ter S cience, E ast C h ina N orm a l U n iv ersity S hang ha i 200062 Abstract Pa rtition ing p rob lem s belong to a k ind of N P 2com p lete op ti iza tion p rob lem s, w h ich occu r frequen tly in the rea l
32、 m w o rld. T h is p ap er in troduces a so lu tion to p a rtition ing p rob lem s w ith sa tisfacto ry resu lts by u sing ex tended Hop field neu ra l net2 w o rk. It p roves a new app roach to so lving p a rtition ing p rob lem s and gives help fu l h in ts fo r so lving o ther op ti iza tion p ro
33、b lem s. m Keywordsp a rtition ing p rob lem Hop field m odela rtificia l neu ra l netw o rk Cl ien t- Tran saction - Behav ior Ana lysis Using Conceptua l Cluster ing P26 W u F eng S h i P engf ei ( Institu te of Im ag e P rocessing and P a ttern R ecog n ition , S hang ha i J iaotong U n iv ersity
34、 S hang ha i 200030 AbstractT h is p ap er first exp la in s rela ted concep ts of da ta m in ing, and then p resen ts an app lica tion system in the stock indu s2 try. W ith the m in ing m ethod of concep tua l clu stering, th is system is u sed to ex tract u sefu l info rm a tion from clien t 2tra
35、n saction 2 . behavio r, and find un iversa l ru les tha t affect clien ts p rofit and lo ss Keywordsknow ledge discovery in da taba seda ta m in ing concep tua l clu stering da ta clean ing D evelopm en t & Appl ica tion Networked M ulti ed ia Technology Appl ied in TV News Programm e Produc in
36、g P29 m AbstractT he app lica tion of m u lti edia on In ternet is cu rren tly a techn ica l ho t 2top ic. T h is p ap er discu sses the po ten tia ls and m m a in difficu lties of m u lti edia techno logy on In ternet. It a lso p ropo ses a p ractica l so lu tion ba sed on the exp eriences of TV ne
37、w s m p rogramm e p roducing. Keywordsm u lti edia on In ternet B S S IPv6RM T P CM T P J PEG PEG 22 rea l2ti e Q u ick ti e m M m m I plem en ta tion of an O bject-O r ien ted Com plex Da ta M anagem en t System P32 m J iang X iaod an J iang L iquan u Gansha Gao C huanshan (D ep a rtm en t of C om
38、p u ter S cience, F ud an U n iv ersity S hang ha i W 200433 Abstract W ith the changing app lica tion environm en t and m o re com p lex da ta m odes, ob ject 2 rien ted concep t ha s been in tro 2 o duced in DBM S. T h is p ap er illu stra tes the po ssib ility of i p lem en ting an ob ject 2 rien
39、 ted da ta m anagem en t system on the ground m o of a non 2 ject 2 rien ted DBM S, exp la in ing p a rticu la rly how the system da ta m odu le and scrip t m odu le m anage com p lex sem an 2 ob o . tics, and how the u ser da ta m odu le p rovides a un iversa l in terface to com p lex da ta and sho
40、w com p lex behavio rs Keywordsob ject 2 rien ted DBM S da ta m ode virtua l m ach ine scrip t language o On W in sock Programm ing W ith M ultithread P35 W ang Guangw eiL e W eiz hao (D ep a rtm en t of E lectron ic E ng ineering , S hand ong U n iv ersity J inan 250100 AbstractT h is p ap er in tr
41、oduces W in sock p rogramm ing and illu stra tes how to do it w ith m u ltith read in V isua l C + + 6. 0. Keywordsnetw o rk socket b lock ing m u ltith read Two M ethods for Rea l- T i e I m mage Captur ing on M icrosof tW indows P40 S un J iy u Z hang X iubing J iang L ingy un (D ep a rtm en t of
42、Inf orm a tion & C on trol E ng ineering , S chool of E lectrica l P ow er , S hang ha i J iaotong U n iv ersity S hang ha i 200030 AbstractT h is p ap er in troduces tw o m ethods fo r p rogramm ing rea l2ti e dynam ic i age- cap tu ring app lica tion s on M icro soft m m . W indow s T he first
43、 m ethod u ses function s of Softw a re D evelopm en t K it ( SD K a ttached to the video cap tu re ca rd, w h ich is help fu l in th is field. T he second m ethod u ses softw a re of V ideo fo r W indow s (V fW a ttached to W indow s 98. W ith such devel2 opm en t softw a re, p rogramm ing requ ire
44、s no know ledge abou t the ha rdw a re. T h is p ap er a lso includes a p rogram successfu lly de2 velop ed and com p iled in V isua l C + + 6. 0 a s w ell a s figu res cap tu red by th is p rogram. Keywordscap tu re i age video SD K m D esign of a Fore ign Trade M anagem en t System Ba sed on Cl ien t Server P44
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代環(huán)保材料在建筑領(lǐng)域的應(yīng)用前景
- 現(xiàn)代交通工具設(shè)計(jì)中傳統(tǒng)文化的融入方式
- 基坑安全專項(xiàng)方案
- 現(xiàn)代東方風(fēng)洗浴中心的節(jié)能環(huán)保裝修方案
- 2024年春九年級化學(xué)下冊 第9單元 溶液 實(shí)驗(yàn)活動5 一定溶質(zhì)質(zhì)量分?jǐn)?shù)的氯化鈉溶液的配制說課稿 (新版)新人教版
- 2023三年級英語下冊 Unit 1 Animals on the farm Lesson 3 Fish and Birds說課稿 冀教版(三起)
- 2023二年級數(shù)學(xué)上冊 一 加與減第1課時(shí) 誰的得分高配套說課稿 北師大版
- 2025蓄電池產(chǎn)品及零部件檢驗(yàn)合同書
- 《5 奇形怪狀的熱帶魚(圖形工具)》說課稿-2023-2024學(xué)年清華版(2012)信息技術(shù)一年級上冊
- 2024秋五年級英語上冊 Module 2 Unit 1 What did you buy說課稿 外研版(三起)
- 廣東省廣州市2025屆高三上學(xué)期12月調(diào)研測試(零模)英語 含解析
- 偏癱足內(nèi)翻的治療
- 蘭溪市排水防澇提升雨污管網(wǎng)修復(fù)改造初步設(shè)計(jì)文本
- 藥企質(zhì)量主管競聘
- 信息對抗與認(rèn)知戰(zhàn)研究-洞察分析
- 2024-2025學(xué)年人教版八年級上冊地理期末測試卷(一)(含答案)
- GB/T 44546-2024建筑用裝配式集成吊頂通用技術(shù)要求
- 心腦血管疾病預(yù)防課件
- 中央2025年中國農(nóng)業(yè)銀行研發(fā)中心校園招聘344人筆試歷年參考題庫解題思路附帶答案詳解
- 手術(shù)室??谱o(hù)士工作總結(jié)匯報(bào)
- 2025屆高三聽力技巧指導(dǎo)-預(yù)讀、預(yù)測
評論
0/150
提交評論