一種傳輸數(shù)據(jù)的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種傳輸數(shù)據(jù)的方法及裝置。
【背景技術(shù)】
[0002]隨著通信技術(shù)的發(fā)展,終端和服務(wù)器之間建立的網(wǎng)絡(luò)連接進行數(shù)據(jù)傳輸?shù)募夹g(shù),已經(jīng)是非常成熟的通信技術(shù)。其中,套接字socket是對網(wǎng)絡(luò)連接中TCP (Transmiss1nControl Protocol,傳輸控制協(xié)議)的封裝,通過建立socket連接可以區(qū)分來自不同應(yīng)用進程與網(wǎng)絡(luò)連接之間的通信。
[0003]現(xiàn)有技術(shù)中,應(yīng)用在終端與服務(wù)器之間建立socket連接后,創(chuàng)建用于傳輸數(shù)據(jù)的工作線程,工作線程在接收數(shù)據(jù)時向操作系統(tǒng)發(fā)送接收數(shù)據(jù)的請求,此時如果服務(wù)器返回了數(shù)據(jù),則將該數(shù)據(jù)拷貝回應(yīng)用的緩存空間并向工作線程返回接收成功的消息,如果服務(wù)器未返回數(shù)據(jù),則操作系統(tǒng)會等待該返回的數(shù)據(jù)并不向工作線程返回任何消息,工作線程如果未接收到返回的消息則無法進行其他的傳輸數(shù)據(jù)的操作,直到操作系統(tǒng)確認接收到服務(wù)器通過socket連接返回數(shù)據(jù)后,向工作線程返回接收成功的消息,工作線程才可以進行其他發(fā)送數(shù)據(jù)或接收數(shù)據(jù)的操作。
[0004]在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005]工作線程在等待操作系統(tǒng)返回接收成功的消息時,無法進行其他操作,降低了工作線程的效率,會影響數(shù)據(jù)的利用效率。
【發(fā)明內(nèi)容】
[0006]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種傳輸數(shù)據(jù)的方法及裝置。所述技術(shù)方案如下:
[0007]—方面,提供了一種傳輸數(shù)據(jù)的方法,所述方法包括:
[0008]工作線程向終端操作系統(tǒng)發(fā)起異步讀取請求,以使所述操作系統(tǒng)在接收到服務(wù)器返回給所述終端的數(shù)據(jù)時存儲所述數(shù)據(jù);
[0009]所述工作線程接收所述操作系統(tǒng)根據(jù)所述異步讀取請求返回的用于指示檢測所述操作系統(tǒng)返回消息的第一返回值,根據(jù)所述第一返回值的指示實時檢測所述操作系統(tǒng)是否返回消息;
[0010]當所述操作系統(tǒng)存儲所述服務(wù)器返回給所述終端的數(shù)據(jù)后,所述工作線程如果檢測出所述操作系統(tǒng)返回的用于指示處理數(shù)據(jù)的第二返回值,則根據(jù)所述第二返回值的指示處理所述返回的數(shù)據(jù)。
[0011]另一方面,提供了一種傳輸數(shù)據(jù)的裝置,所述裝置包括:
[0012]請求發(fā)起模塊,用于工作線程向終端操作系統(tǒng)發(fā)起異步讀取請求,以使所述操作系統(tǒng)在接收到服務(wù)器返回給所述終端的數(shù)據(jù)時存儲所述數(shù)據(jù);
[0013]執(zhí)行模塊,用于所述工作線程接收所述操作系統(tǒng)根據(jù)所述異步讀取請求返回的用于指示檢測所述操作系統(tǒng)返回消息的第一返回值,根據(jù)所述第一返回值的指示實時檢測所述操作系統(tǒng)是否返回消息;
[0014]第一處理模塊,用于當所述操作系統(tǒng)存儲所述服務(wù)器返回給所述終端的數(shù)據(jù)后,所述工作線程如果檢測出所述操作系統(tǒng)返回的用于指示處理數(shù)據(jù)的第二返回值,則根據(jù)所述第二返回值的指示處理所述返回的數(shù)據(jù)。
[0015]通過工作線程向操作系統(tǒng)發(fā)起異步讀取請求,接收操作系統(tǒng)返回的第一返回值后,執(zhí)行除異步讀取操作以外的其他操作,并根據(jù)操作系統(tǒng)發(fā)送的通知消息處理服務(wù)器返回給終端的數(shù)據(jù)。避免了工作線程在請求數(shù)據(jù)的過程中被阻塞無法執(zhí)行其他操作的缺陷,提高了 socket連接傳輸數(shù)據(jù)的效率。
【附圖說明】
[0016]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0017]圖1是本發(fā)明實施例一提供的傳輸數(shù)據(jù)的方法流程圖;
[0018]圖2是本發(fā)明實施例二提供的傳輸數(shù)據(jù)的方法流程圖;
[0019]圖3是本發(fā)明實施例二提供的傳輸數(shù)據(jù)的方法中對工作線程進行實時退出的方法流程圖;
[0020]圖4是本發(fā)明實施例二提供的傳輸數(shù)據(jù)的方法中對終端與服務(wù)器之間的連接斷開后重連的方法流程圖;
[0021]圖5是本發(fā)明實施例二提供的傳輸數(shù)據(jù)的方法中工作線程向服務(wù)器發(fā)送心跳信息的方法流程圖;
[0022]圖6是本發(fā)明實施例三提供的傳輸數(shù)據(jù)的裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0023]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0024]實施例一
[0025]本發(fā)明實施例提供了一種傳輸數(shù)據(jù)的方法,參見圖1,方法流程包括:
[0026]101:工作線程向終端操作系統(tǒng)發(fā)起異步讀取請求,以使所述操作系統(tǒng)在接收到服務(wù)器返回給所述終端的數(shù)據(jù)時存儲所述數(shù)據(jù);
[0027]102:所述工作線程接收所述操作系統(tǒng)根據(jù)所述異步讀取請求返回的用于指示檢測所述操作系統(tǒng)返回消息的第一返回值,根據(jù)所述第一返回值的指示實時檢測所述操作系統(tǒng)是否返回消息;
[0028]103:當所述操作系統(tǒng)存儲所述服務(wù)器返回給所述終端的數(shù)據(jù)后,所述工作線程如果檢測出所述操作系統(tǒng)返回的用于指示處理數(shù)據(jù)的第二返回值,則根據(jù)所述第二返回值的指示處理所述返回的數(shù)據(jù)。
[0029]本發(fā)明實施例通過工作線程向操作系統(tǒng)發(fā)起異步讀取請求,接收操作系統(tǒng)返回的第一返回值后,執(zhí)行除異步讀取操作以外的其他操作,并根據(jù)操作系統(tǒng)發(fā)送的通知消息處理服務(wù)器返回給終端的數(shù)據(jù)。避免了工作線程在請求數(shù)據(jù)的過程中被阻塞無法執(zhí)行其他操作的缺陷,提高了 socket連接傳輸數(shù)據(jù)的效率。
[0030]實施例二
[0031]本發(fā)明實施例提供了一種傳輸數(shù)據(jù)的方法,參見圖2,方法流程包括:
[0032]201:工作線程向終端操作系統(tǒng)發(fā)起異步讀取請求,以使所述操作系統(tǒng)在接收到服務(wù)器返回給所述終端的數(shù)據(jù)時存儲所述數(shù)據(jù)。
[0033]當應(yīng)用啟動時首先創(chuàng)建用于傳輸數(shù)據(jù)的工作線程,并通過工作線程建立終端與服務(wù)器之間的套接字socket連接。其中,通過完成與服務(wù)器的三次握手完成與服務(wù)器建立的socket 連接。
[0034]其中,異步讀取請求中攜帶緩沖區(qū)地址和回調(diào)函數(shù)地址。具體的,異步讀取請求為WSARecv ()函數(shù)來實現(xiàn),其目的向操作系統(tǒng)發(fā)送讀取服務(wù)器通過建立的socket連接返回的數(shù)據(jù),因此在該函數(shù)中至少會攜帶該應(yīng)用對應(yīng)的socket的標識,以及緩沖區(qū)地址和回調(diào)函數(shù)地址。
[0035]其中,終端接收到服務(wù)器返回的數(shù)據(jù)后,先將數(shù)據(jù)存儲于操作系統(tǒng)的緩沖區(qū)中,應(yīng)用如果需要對該數(shù)據(jù)進行處理,必須要將該數(shù)據(jù)復(fù)制到應(yīng)用對應(yīng)的緩沖區(qū),因此異步讀取請求中攜帶的緩沖區(qū)地址,則為該應(yīng)用對應(yīng)的緩沖區(qū)的地址,以指示操作系統(tǒng),終端在通過應(yīng)用對應(yīng)的socket接收到的數(shù)據(jù),按照異步讀取請求中攜帶的緩沖區(qū)地址進行轉(zhuǎn)存的操作。
[0036]其中,回調(diào)函數(shù)地址是一個指針,用于告知操作系統(tǒng)應(yīng)用對應(yīng)的回調(diào)函數(shù)的存儲地址。因此,回調(diào)函數(shù)是一個通過函數(shù)指針調(diào)用的函數(shù),通過異步讀取請求中攜帶的回調(diào)函數(shù)地址告知給操作系統(tǒng),則是將該回調(diào)函數(shù)的指針地址作為參數(shù)傳遞給操作系統(tǒng),當操作系統(tǒng)調(diào)用該回調(diào)函數(shù)時,會根據(jù)指針地址調(diào)用指針地址對應(yīng)的函數(shù),該指針地址對應(yīng)的函數(shù)是屬于發(fā)送異步讀取請求的應(yīng)用,其功能是處理服務(wù)器返回給終端的數(shù)據(jù)。進一步的,當終端與服務(wù)器之間建立的socket連接斷開時,即socket連接斷開時,操作系統(tǒng)還可以通過調(diào)用回調(diào)函數(shù),向應(yīng)用的工作線程返回一個消息,用于告知應(yīng)用socket連接斷開。
[0037]202:所述工作線程接收所述操作系統(tǒng)根據(jù)所述異步讀取請求返回的用于指示檢測所述操作系統(tǒng)返回消息的第一返回值,根據(jù)所述第一返回值的指示實時檢測所述操作系統(tǒng)是否返回消息。<