亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

管理和檢查套接字連接的制作方法

文檔序號:7621012閱讀:125來源:國知局
專利名稱:管理和檢查套接字連接的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及服務(wù)器與客戶端之間的套接字管理。更具體地講,本發(fā)明涉及一種系統(tǒng),該系統(tǒng)用于管理和檢查套接字具有基于伯克利軟件發(fā)布(Berkeley Software Distribution-BSD)、基于Unix、或基于Linux的操作系統(tǒng)的服務(wù)器或設(shè)備之間的連接,并且當(dāng)異常連接發(fā)生時斷開或重新連接套接字連接。
背景技術(shù)
具有基于BSD、基于Unix、或基于Linux的操作系統(tǒng)(OS)的服務(wù)器或設(shè)備有幾個在其中執(zhí)行的應(yīng)用程序。通常,應(yīng)用程序利用一個諸如傳輸控制協(xié)議(TCP)的面向連接的協(xié)議,以在其間執(zhí)行通信。TCP是一個可靠的并且提供全雙工通信和一個連續(xù)字節(jié)流面向連接的協(xié)議。TCP提供糾錯功能、轉(zhuǎn)播功能、和流控制功能以進行可靠的數(shù)據(jù)傳輸。因此,根據(jù)在服務(wù)器和設(shè)備中執(zhí)行的應(yīng)用程序根據(jù)TCP協(xié)議識別在間的連接,并且使用該連接在彼此間發(fā)送/接收消息。
大多數(shù)操作系統(tǒng)使用套接字做為用于面向連接協(xié)議的接口,并且各個應(yīng)用程序管理各個連接所需的套接字各個。
實現(xiàn)面向連接的套接字從而服務(wù)器和客戶端之間的連接能在正常狀態(tài)中建立或釋放,并且當(dāng)另一方的連接斷開時,也能被釋放。然而,在作為服務(wù)器和客戶端任一個的另一方的電源關(guān)閉或者從具有可移動插槽的設(shè)備中去除插槽的情況下,并不立即釋放套接字,而是在相當(dāng)長的時間內(nèi)維持。另外,因為套接字連接被認(rèn)為正被維持,所以所述的套接字連接被確定為能夠在內(nèi)部收發(fā)信息,這導(dǎo)致異常操作。尤其,實時的系統(tǒng)可能遇到較嚴(yán)重的問題。
除此之外,當(dāng)由于某一異常操作導(dǎo)致服務(wù)器和客戶端之間的連接斷開時,為了重新連接而釋放現(xiàn)有的套接字連接是必需的,但是當(dāng)這種情形未被識別時,連續(xù)維持異常操作狀態(tài)中的錯誤可能發(fā)生。
服務(wù)器創(chuàng)建套接字以與第一客戶端和第二客戶端通信。即使在第二客戶端中發(fā)生電源供給中斷,服務(wù)器也不識別這種事實并且將數(shù)據(jù)發(fā)送到第二客戶端,導(dǎo)致數(shù)據(jù)傳輸錯誤。
通過利用一種作為標(biāo)準(zhǔn)套接字選項的稱作“保持存活”的技術(shù)來執(zhí)行套接字連接管理。然而,默認(rèn)保持存活時間是2小時(7200秒)并且在其間沒有消息交換,因此迅速地建立重新連接是不可能的。為了解決這個問題,大多數(shù)應(yīng)用程序利用它們自己的特殊方法來檢查套接字連接。就是說,應(yīng)用程序有不同的套接字連接管理方法。在所有的應(yīng)用程序中必須實現(xiàn)類似的功能,從而導(dǎo)致不必要的功能重復(fù)。
而且,各個套接字連接管理被不連續(xù)地執(zhí)行,因而難以確定問題是否起因于服務(wù)器和客戶端之間的連接問題或相應(yīng)的應(yīng)用程序之間的操作問題,從而導(dǎo)致困難的和復(fù)雜的系統(tǒng)管理。

發(fā)明內(nèi)容
因此,本發(fā)明的目的是提供用于管理套接字連接的系統(tǒng)和檢查套接字連接的方法,以減少在服務(wù)器和客戶端之間被驅(qū)動以管理套接字連接的的應(yīng)用程序模塊的不必要的工作。
根據(jù)本發(fā)明的一個方面,一種用于管理套接字連接的系統(tǒng)包括至少一個應(yīng)用程序模塊,其用于創(chuàng)建套接字與服務(wù)器或客戶端通信所需的套接字,并且用于調(diào)用應(yīng)用程序接口(API)以檢查創(chuàng)建的套接字的套接字連接以管理創(chuàng)建的套接字;公共庫模塊,其包含用于隨著API被從應(yīng)用程序模塊中調(diào)用,而執(zhí)行在調(diào)用的API中設(shè)置的操作的程序;和套接字檢查執(zhí)行模塊,通過執(zhí)行公共庫模塊中的編碼程序而被創(chuàng)建,并被用于定期地檢查創(chuàng)建的套接字的套接字連接。
根據(jù)本發(fā)明的另一個方面,檢查套接字連接的方法包括通過驅(qū)動被編程以創(chuàng)建和管理與服務(wù)器合客戶端其中之一通信所需的套接字的應(yīng)用程序模塊來創(chuàng)建某一套接字;應(yīng)用程序模塊調(diào)用被定義以檢查創(chuàng)建的套接字的套接字連接的應(yīng)用程序接口(API);隨著API被應(yīng)用程序模塊調(diào)用,公共庫模塊執(zhí)行用于執(zhí)行在調(diào)用的API中設(shè)置的操作的程序;和通過執(zhí)行公共庫模塊中執(zhí)行的程序而創(chuàng)建的套接字檢查執(zhí)行模塊,來定期地檢查創(chuàng)建的套接字的套接字連接。
還根據(jù)本發(fā)明的另一個方面,一種檢查在設(shè)置與客戶機連接的套接字的服務(wù)器中的套接字的套接字連接的方法包括根據(jù)調(diào)用存儲用于隨著與服務(wù)器連接的套接字被設(shè)置來檢查相應(yīng)套接字的套接字連接的程序的庫函數(shù);通過執(zhí)行調(diào)用的庫函數(shù)來注冊將被定期地檢查的套接字;并且通過執(zhí)行調(diào)用的庫函數(shù),定期地將套接字檢查請求消息發(fā)送到客戶端并根據(jù)是否已經(jīng)從相應(yīng)的客戶端接收到套接字檢查響應(yīng)消息來定期地檢查注冊的套接字的套接字連接。
還根據(jù)本發(fā)明的另一個方面,一種檢查在設(shè)置與客戶機連接的套接字的服務(wù)器中的套接字的套接字連接的方法包括根據(jù)調(diào)用存儲用于隨著與服務(wù)器連接的套接字被設(shè)置來檢查相應(yīng)套接字的套接字連接的程序的庫函數(shù);以及通過執(zhí)行調(diào)用的庫函數(shù)來定期地發(fā)送套接字檢查響應(yīng)消息以響應(yīng)于定期地從服務(wù)器接收的套接字檢查請求消息,并且根據(jù)套接字檢查請求消息是否已被定期地接收來檢查被設(shè)置與服務(wù)器連接的套接字的套接字連接。


隨著通過參照下面詳細(xì)的描述,同時參考相關(guān)的附圖而使本發(fā)明變得更好理解,本發(fā)明更完善的評價以及其中許多相伴隨的優(yōu)點將變得更清楚,其中相同的符號指示相同的或相似的部件,其中圖1是在面向連接套接字中發(fā)生錯誤的示意圖;圖2是根據(jù)本發(fā)明的實施例的使用管理套接字連接的系統(tǒng)的服務(wù)器-客戶端網(wǎng)絡(luò)系統(tǒng)的配置的示意圖;圖3是根據(jù)本發(fā)明的實施例的在服務(wù)器中工作的套接字管理系統(tǒng)的配置示意圖;圖4是根據(jù)本發(fā)明的實施例的在客戶端中工作的套接字管理系統(tǒng)的配置的示意圖;
圖5是根據(jù)本發(fā)明的實施例的用于檢查套接字連接的健康檢查消息的示意圖;圖6是客戶端狀態(tài)的示意圖;圖7是根據(jù)本發(fā)明的實施例的使用套接字管理系統(tǒng)來管理服務(wù)器中的套接字的示意圖;圖8是根據(jù)本發(fā)明的實施例的在服務(wù)器中的套接字檢查執(zhí)行模塊的操作的流程圖;圖9是根據(jù)本發(fā)明的實施例的在定期地檢查注冊的套接字的套接字連接的服務(wù)器的套接字檢查執(zhí)行模塊的操作的流程圖;圖10是根據(jù)本發(fā)明的在客戶端中由套接字檢查執(zhí)行模塊進行套接字檢查的流程圖;圖11是根據(jù)本發(fā)明的實施例的在服務(wù)器和客戶端之間的健康檢查消息的傳輸?shù)氖疽鈭D;圖12是根據(jù)本發(fā)明,利用健康檢查消息,發(fā)現(xiàn)和處理客戶端問題的示意圖;以及圖13是根據(jù)本發(fā)明,利用健康檢查消息,發(fā)現(xiàn)和處理服務(wù)器問題的示意圖。
具體實施例方式
圖1是在面向連接套接字中發(fā)生錯誤的示意圖。
參照圖1,服務(wù)器1創(chuàng)建套接字以與第一客戶端2和第二客戶端3通信。即使在第二客戶端3中發(fā)生供電中斷,服務(wù)器1也不識別這一事實并將數(shù)據(jù)發(fā)送到第二客戶端3,導(dǎo)致數(shù)據(jù)傳輸錯誤。
通過利用作一種標(biāo)準(zhǔn)套接字選項的稱作“保持存活”的技術(shù),執(zhí)行套接字連接管理。然而,默認(rèn)保持存活時間是2小時(7200秒)并且在其間沒有交換的消息,因此迅速地建立重新連接是不可能的。
為了解決這個問題,大多數(shù)應(yīng)用程序利用它們自己的特殊方法檢查套接字連接。就是說,應(yīng)用程序有不同的套接字連接管理方法。這需要將在所有的應(yīng)用程序中實現(xiàn)的功能,從而導(dǎo)致不必要的重復(fù)。
同樣,套接字連接管理被不連續(xù)地執(zhí)行,因而難以確定問題是否起因于服務(wù)器和客戶端之間的連接問題或相應(yīng)的應(yīng)用程序之間的操作問題,這使得管理系統(tǒng)困難和復(fù)雜。
現(xiàn)在,下面將參考附圖來更充分地描述本發(fā)明,其中顯示了本發(fā)明的示例性實施例。然而,本發(fā)明能以不同的形式實現(xiàn),并且在此不應(yīng)該被理解為限于提出的實施例。更確切地說,提供了這些實施例使得此公開將是徹底的和完全的,并且將充分地將本發(fā)明的范圍傳遞到那些本領(lǐng)域技術(shù)人員中。在附圖中,在說明書中相同的標(biāo)號始終指的是相同的元件。
圖2是根據(jù)本發(fā)明的實施例的使用管理套接字連接的系統(tǒng)的服務(wù)器-客戶端網(wǎng)絡(luò)系統(tǒng)的配置的示意圖。
參照圖2,服務(wù)器100與多個客戶端200、300、400、和500通過網(wǎng)絡(luò)連接。通過在服務(wù)器100中驅(qū)動的服務(wù)器應(yīng)用程序模塊和在各個客戶端200、300、400、和500中驅(qū)動的客戶端應(yīng)用程序模塊通過套接字通信連接。
在服務(wù)器100中被驅(qū)動的服務(wù)器應(yīng)用程序模塊設(shè)置與客戶端應(yīng)用程序模塊的通信所需的套接字,客戶端應(yīng)用程序模塊在各個客戶端200、300、400、和500中被驅(qū)動并且定期地檢查套接字連接。
在服務(wù)器100或各個客戶端200、300、400、和500中驅(qū)動的各個應(yīng)用程序模塊執(zhí)行其中被編程的處理以提供多種的服務(wù)。因此,可根據(jù)由服務(wù)器100或各個客戶端200、300、400、和500提供的服務(wù)類型,以各種形式實現(xiàn)應(yīng)用程序模塊。
另外,應(yīng)用程序模塊能包括基于通信協(xié)議的服務(wù)器-客戶端在各種數(shù)字處理裝置中所操作的各種軟件應(yīng)用程序模塊。
而且,因為應(yīng)用程序模塊與基于通信協(xié)議的服務(wù)器-客戶端工作,所以當(dāng)它在服務(wù)器100或各個客戶端200、300、400、和500中執(zhí)行時,它創(chuàng)建用于在服務(wù)器100和各個客戶端200、300、400、和500中驅(qū)動的應(yīng)用程序模塊之間的通信的套接字,并且它在通信已完成之后釋放創(chuàng)建的套接字的連接。
各個應(yīng)用程序模塊必須實時地檢查在服務(wù)器100與各個客戶端200、300、400、和500之間的套接字連接。應(yīng)用程序模塊調(diào)用應(yīng)用程序接口(API)以檢查套接字連接并且被API創(chuàng)建的套接字檢查執(zhí)行模塊執(zhí)行套接字檢查。
各個應(yīng)用程序模塊創(chuàng)建套接字用于與某一客戶端的通信的套接字并維持或釋放創(chuàng)建的套接字。下面將被詳細(xì)解釋應(yīng)用程序模塊的配置和操作,該應(yīng)用程序模塊調(diào)用API以檢查某一套接字并且以API創(chuàng)建的套接字檢查執(zhí)行模塊執(zhí)行套接字檢查。
在本發(fā)明的實施例中,在服務(wù)器100和各個客戶端200、300、400、和500中驅(qū)動的應(yīng)用程序模塊定義用于檢查其間設(shè)置的套接字的套接字連接的API并且調(diào)用API以定期地檢查各個套接字的套接字連接。
用于檢查套接字連接的API被配置以用在服務(wù)器100和各個客戶端200、300、400、和500中并被服務(wù)器100和各個客戶端200、300、400、和500調(diào)用。下面,API的套接字連接檢查功能被稱作“健康檢查(HC或hc)”。即,用于檢查套接字連接的API以“hc”開始。
服務(wù)器和客戶端定期地發(fā)送和接收用于檢查套接字的套接字連接的消息。服務(wù)器定期地將健康檢查請求消息HC_REQUEST發(fā)送到客戶端,并且客戶端將健康檢查響應(yīng)消息HC_RESPONSE發(fā)送到服務(wù)器。
圖3是根據(jù)本發(fā)明的實施例的在服務(wù)器中工作的套接字管理系統(tǒng)的配置的方框圖。
參照圖3,在服務(wù)器中驅(qū)動的套接字管理系統(tǒng)包括至少一個應(yīng)用程序模塊110,其創(chuàng)建與客戶端通信所需的套接字并調(diào)用API檢查相應(yīng)套接字的套接字連接以管理創(chuàng)建的套接字;公共庫模塊120,具有用于在從應(yīng)用程序模塊110調(diào)用的API中設(shè)置的操作的程序;套接字檢查執(zhí)行模塊130,通過執(zhí)行在公共庫模塊120中的編碼的程序而被創(chuàng)建,套接字檢查執(zhí)行模塊130定期地檢查由應(yīng)用程序模塊110創(chuàng)建的套接字的套接字連接;以及數(shù)據(jù)庫(DB)140。
應(yīng)用程序模塊110包含檢查套接字的套接字連接的API。在服務(wù)器中定義的API將在下面解釋。
服務(wù)器初始化API(hc_server_init)111是創(chuàng)建用于HC函數(shù)的線程以執(zhí)行健康檢查HC的API。服務(wù)器初始化API 111被增加到應(yīng)用程序的開始部分。下面,HC函數(shù)線程被稱作為套接字檢查執(zhí)行模塊。
服務(wù)器注冊API(hc_server_register)112是注冊套接字從而可為了健康檢查HC而檢查某一套接字的套接字連接的API。服務(wù)器注冊API被加到其中用于服務(wù)器的套接字被打開以便連接到客戶端應(yīng)用程序模塊的位置。連接到客戶端的套接字被注冊然后被連續(xù)地檢查。
服務(wù)器注冊取消API(hc_server_unregister)113是取消為了健康檢查HC而被檢查的套接字的注冊的API。服務(wù)器注冊取消API 113被加到其中套接字被正常釋放的應(yīng)用程序模塊110的位置。服務(wù)器注冊取消API 113釋放與客戶端的連接。
服務(wù)器處理API(hc_server_process)114檢查從為了將由在服務(wù)器中所執(zhí)行的應(yīng)用程序模塊檢查的其套接字連接而注冊的數(shù)據(jù)是否是用于健康檢查HC的數(shù)據(jù)。然后服務(wù)器處理API 114處理檢查的數(shù)據(jù)。服務(wù)器處理API用于服務(wù)器,且當(dāng)已接收到響應(yīng)于套接字檢查請求消息HC_REQUEST的套接字檢查響應(yīng)消息HC_RESPONSE時被使用。
服務(wù)器釋放API(hc_server_exit)115是釋放所有注冊的套接字并釋放套接字檢查執(zhí)行模塊130的API。
公共庫模塊120包括編碼的程序以執(zhí)行在從應(yīng)用程序模塊110調(diào)用的API中設(shè)置的操作。公共庫模塊120包括用于執(zhí)行定義以分別對相應(yīng)于服務(wù)器初始化API、服務(wù)器注冊API、服務(wù)器注冊取消API、服務(wù)器處理API、和服務(wù)器釋放API的函數(shù)的程序。
當(dāng)從應(yīng)用程序模塊110調(diào)用服務(wù)器初始化API(hc_server-init)111時,公共庫模塊120執(zhí)行用于執(zhí)行被定義以對應(yīng)于服務(wù)器初始化API的函數(shù)的程序以創(chuàng)建將被用于健康檢查HC的套接字檢查執(zhí)行模塊,從而準(zhǔn)備定期地檢查某一套接字的套接字連接。
當(dāng)從應(yīng)用程序模塊110調(diào)用服務(wù)器注冊API(hc_server-register)112時,公共庫模塊120執(zhí)行用于執(zhí)行被定義以對應(yīng)于服務(wù)器注冊API的函數(shù)的程序以在創(chuàng)建的套接字檢查執(zhí)行模塊130中注冊套接字,以為健康檢查HC檢查某一套接字的套接字連接。
當(dāng)從應(yīng)用程序模塊110調(diào)用服務(wù)器注冊取消API(hc_server-unregister)113時,公共庫模塊120執(zhí)行用于執(zhí)行被定義以對應(yīng)于服務(wù)器注冊取消API的函數(shù)的程序以取消由套接字檢查執(zhí)行模塊130檢查的套接字的注冊。然后,釋放在套接字檢查執(zhí)行模塊130中取消注冊的套接字。
當(dāng)從應(yīng)用程序模塊110調(diào)用服務(wù)器處API(hc_server-process)114時,公共庫模塊120執(zhí)行用于執(zhí)行被定義以對應(yīng)于服務(wù)器處API的函數(shù)的程序以檢查從客戶端發(fā)送的消息是否是響應(yīng)于從服務(wù)器發(fā)送到相應(yīng)客戶端的健康檢查請求消息的響應(yīng)消息,以改變客戶端的狀態(tài)值。
當(dāng)從應(yīng)用程序模塊110調(diào)用服務(wù)器釋放API(hc_server-exit)115時,公共庫模塊120執(zhí)行用于執(zhí)行被定義以對應(yīng)于服務(wù)器釋放API的函數(shù)的程序,以釋放在套接字檢查執(zhí)行模塊130中所有注冊的套接字的注冊,以檢查相應(yīng)套接字的套接字連接并且釋放相應(yīng)套接字檢查執(zhí)行模塊130。
當(dāng)從應(yīng)用程序模塊110調(diào)用服務(wù)器初始化API時,創(chuàng)建套接字檢查執(zhí)行模塊130,并且在公共庫模塊120中的程序執(zhí)行被定義以對應(yīng)于服務(wù)器初始化API的函數(shù)。
套接字檢查執(zhí)行模塊130定期地發(fā)送健康檢查請求消息以檢查由應(yīng)用程序模塊指定的套接字的套接字連接,并且根據(jù)是否已從客戶端接收到健康檢查響應(yīng)消息檢查相應(yīng)套接字的套接字連接。
DB 140存儲創(chuàng)建套接字以與服務(wù)器通信的每一客戶端的ID和狀態(tài)信息通信。
圖4是根據(jù)本發(fā)明的實施例的在客戶端中工作的套接字管理系統(tǒng)的配置的方框圖。
參照圖4,在客戶端中驅(qū)動的套接字管理系統(tǒng)包括至少一個應(yīng)用程序模塊210,用于調(diào)用用于檢查套接字的套接字連接的API;公共庫模塊220,具有用于當(dāng)從應(yīng)用程序模塊210調(diào)用某一API時,執(zhí)行在從應(yīng)用程序模塊210調(diào)用的API中設(shè)置的操作的程序;套接字檢查執(zhí)行模塊230,通過執(zhí)行在公共庫模塊220中的程序而被創(chuàng)建,并且定期地檢查由應(yīng)用程序模塊210創(chuàng)建的套接字的套接字連接;以及DB 240。
應(yīng)用程序模塊210包括定義的API以檢查套接字的套接字連接。下面將解釋在客戶端中定義的API。
客戶端包括其中定義的客戶端初始化API 211、客戶端處理API212以及客戶端釋放API 213。
客戶端初始化(hc_client_init)API 211是初始化將被用于做健康檢查HC的參數(shù)的API。在應(yīng)用程序的開始部分中放置客戶端初始化API211。
客戶端處理API(hc_client_process)212檢查當(dāng)應(yīng)用程序模塊210從服務(wù)器100接收數(shù)據(jù)時,從服務(wù)器100接收的數(shù)據(jù)是否是用于健康檢查HC的數(shù)據(jù)。然后,客戶端處理API 212處理檢查的數(shù)據(jù)??蛻舳颂幚鞟PI是在客戶端中執(zhí)行的API,并當(dāng)已從服務(wù)器100接收到套接字連接請求消息HC_REQUEST時被使用。
客戶端釋放API(hc_client_exit)213是用于初始化所需的參數(shù)和結(jié)束HC操作的API。
當(dāng)從應(yīng)用程序模塊210調(diào)用某一API時,公共庫模塊220包括用于執(zhí)行在每一調(diào)用的API中設(shè)置的操作的程序。因此,公共庫模塊220包括用于執(zhí)行被定義以分別對應(yīng)于客戶端初始化API、客戶端處理API、以及客戶端釋放API的函數(shù)的程序。
當(dāng)從應(yīng)用程序模塊210調(diào)用客戶端初始化API(hc_client-init)211時,公共庫模塊220執(zhí)行用于執(zhí)行被定義以對應(yīng)于客戶端初始化API的函數(shù)的程序以執(zhí)行用于套接字檢查的初始化并創(chuàng)建套接字檢查執(zhí)行模塊,從而準(zhǔn)備定期地檢查連接到服務(wù)器的套接字的套接字連接。
當(dāng)從應(yīng)用程序模塊210調(diào)用客戶端處理API(hc_client-process)212時,公共庫模塊220執(zhí)行用于執(zhí)行被定義以對應(yīng)于客戶端處理API的函數(shù)的程序,以確定從服務(wù)器100接收的相應(yīng)信息是否是健康檢查請求消息HC_REQUEST。
當(dāng)從應(yīng)用程序模塊210調(diào)用客戶端釋放API(hc_client-exit)213時,公共庫模塊220執(zhí)行用于執(zhí)行被定義以對應(yīng)于服務(wù)器釋放API的函數(shù)的程序,以釋放健康檢查操作并終止相應(yīng)的套接字檢查執(zhí)行模塊230。
當(dāng)從應(yīng)用程序模塊210調(diào)用客戶端初始化API時,創(chuàng)建套接字檢查執(zhí)行模塊230,并且執(zhí)行用于執(zhí)行被定義以對應(yīng)于客戶端初始化API的函數(shù)的在公共庫模塊220中的程序。
套接字檢查執(zhí)行模塊230定期地接收健康檢查請求消息,以檢查由應(yīng)用程序模塊指定套接字的套接字連接,并將健康檢查響應(yīng)消息發(fā)送到服務(wù)器,從而根據(jù)是否已從客戶端接收到健康檢查響應(yīng)消息來命令服務(wù)器檢查相應(yīng)套接字的套接字連接。
DB 240存儲服務(wù)器100的套接字設(shè)置信息,以維持被與服務(wù)器100連接的套接字。
圖5是根據(jù)本發(fā)明的實施例的用于檢查套接字連接的健康檢查消息的配置的示意圖。
參考圖5,健康檢查消息的頭部包括幻數(shù)字段、信息類型字段、客戶端ID字段、和包長度字段,并且其主體包括時間標(biāo)記字段、超時字段、和保留字段。
幻數(shù)字段、信息類型字段、客戶端ID字段、和包長度字段,它們每個被分配2字節(jié)。
在幻數(shù)字段中設(shè)置的值是用于檢查套接字的套接字連接的幻數(shù)并被設(shè)置為特定值以確定相應(yīng)的消息是否是健康檢查消息。服務(wù)器的系統(tǒng)時間值被設(shè)置為幻數(shù)字段的值。
指示相應(yīng)的消息是否是健康檢查請求消息或健康檢查響應(yīng)消息的值在消息類型字段中被設(shè)置。
設(shè)置與服務(wù)器的套接字連接的客戶端ID的標(biāo)識符被設(shè)置在客戶端ID字段中以區(qū)別每一客戶端。
消息長度設(shè)置在包長度字段中以檢查相應(yīng)的包的傳輸錯誤。
已被傳輸?shù)南鄳?yīng)的包的時間信息被設(shè)置在時間標(biāo)記字段中。當(dāng)在服務(wù)器和客戶端之間收發(fā)消息時,為了檢查是否已在服務(wù)器和客戶端之間正常地收發(fā)消息,服務(wù)器將時間標(biāo)記字段中的當(dāng)前時間設(shè)置為時間標(biāo)記值,然后將當(dāng)前時間發(fā)送到客戶端。客戶端將健康檢查響應(yīng)消息HC_RESPONSE中的當(dāng)前時間設(shè)置為“按現(xiàn)狀”,然后將當(dāng)前時間發(fā)送到服務(wù)器。服務(wù)器檢查是否已從客戶端正確地傳輸當(dāng)前時間,從而確定客戶端的狀態(tài)。
在服務(wù)器將健康檢查請求消息發(fā)送到客戶端之后,測量所經(jīng)時間。當(dāng)已發(fā)送健康檢查請求消息之后,在預(yù)定時間內(nèi)還未接收到健康檢查響應(yīng)消息時,相應(yīng)套接字的套接字連接被認(rèn)作是斷開的,然后強行地切斷套接字。用于預(yù)定時間的超時值在超時字段中被設(shè)置。
當(dāng)服務(wù)器的傳輸周期Ts改變時,客戶端的等候周期Tc必須改變。因而,每當(dāng)Tc值改變時,超時值就被設(shè)置和傳輸。Tc等于Ts+a是優(yōu)選的,其中,“a”是由用戶設(shè)置的容許值。
服務(wù)器存儲客戶端的狀態(tài)信息以管理客戶端。因此,對所有注冊的客戶端的各個套接字以排列或鏈接列表形式配置服務(wù)器100的DB 140,在其中存儲客戶端ID、客戶端套接字和客戶端狀態(tài)。
客戶端能夠有如圖6所示的三種狀態(tài)。
當(dāng)在用于套接字檢查的套接字檢查執(zhí)行模塊130中注冊套接字時,客戶端從關(guān)閉狀態(tài)HC_ST_CLOSED轉(zhuǎn)變到正常狀態(tài)HC_ST_NORMAL,并且當(dāng)服務(wù)器100的套接字檢查執(zhí)行模塊130將健康檢查請求消息HC_REQUEST發(fā)送到相應(yīng)的客戶端200時,轉(zhuǎn)變到發(fā)送狀態(tài)HC_ST-SENT。當(dāng)從客戶端200接收健康檢查響應(yīng)消息HC_RESPONSE時,它轉(zhuǎn)變到正常狀態(tài)HC_ST_NORMAL。服務(wù)器100傳輸健康檢查請求消息HC_REQUEST,然后在下一個檢查時間檢查客戶端200的狀態(tài)。
因而,已從服務(wù)器100接收的健康檢查請求消息的客戶端將健康檢查響應(yīng)消息發(fā)送到服務(wù)器100,并且服務(wù)器100根據(jù)是否已接收健康檢查響應(yīng)消息來確定相應(yīng)的客戶端的狀態(tài)并在DB 140中設(shè)置相應(yīng)的客戶端的狀態(tài)。
當(dāng)從客戶端接收某一消息時,在服務(wù)器100中驅(qū)動的應(yīng)用程序模塊110調(diào)用服務(wù)器處理API 114。當(dāng)調(diào)用服務(wù)器處理API 114時,在公共庫模塊120中編碼的程序被執(zhí)行以確定從客戶端接收的相應(yīng)的消息是否是健康檢查響應(yīng)消息。當(dāng)接收的消息是健康檢查響應(yīng)消息時,相應(yīng)的客戶端的狀態(tài)值并設(shè)置到正常狀態(tài)HC_ST_NORMAL。
正常狀態(tài)HC_ST_NORMAL表示已正常地接收到健康檢查響應(yīng)消息,但是當(dāng)它保持在發(fā)送狀態(tài)HC_ST_SENT時,這表示沒有響應(yīng)消息。
圖7是根據(jù)本發(fā)明的實施例的使用套接字管理系統(tǒng)管理服務(wù)器中的套接字的流程圖。
參考圖7,當(dāng)在服務(wù)器中驅(qū)動某一應(yīng)用程序模塊時,應(yīng)用程序模塊執(zhí)行用于形成與設(shè)置的客戶端的套接字連接的處理,并調(diào)用其中編碼的API以檢查相應(yīng)的套接字的套接字連接(S100)。當(dāng)由應(yīng)用程序模塊110調(diào)用API時,公共庫模塊120驅(qū)動被定義以對應(yīng)于調(diào)用的API的程序以創(chuàng)建套接字檢查執(zhí)行模塊130來定期地檢查套接字的套接字連接(S200)。
在創(chuàng)建套接字和客戶端之后,應(yīng)用程序模塊110調(diào)用API以在套接字檢查執(zhí)行模塊130中創(chuàng)建相應(yīng)的套接字,以定期地檢查套接字的套接字連接。公共庫模塊120驅(qū)動被定義以對應(yīng)于相應(yīng)的API的程序,以在套接字檢查執(zhí)行模塊130中注冊相應(yīng)的套接字,以執(zhí)行某一套接字的健康檢查(S300)。
套接字檢查執(zhí)行模塊130定期地檢查注冊的套接字的套接字連接(S400)。
圖8是根據(jù)本發(fā)明的實施例的服務(wù)器中的套接字檢查執(zhí)行模塊的流程圖。
參考圖8,在服務(wù)器100中創(chuàng)建的套接字檢查執(zhí)行模塊130,通過設(shè)置的處理,對在其中注冊的套接字執(zhí)行定期健康檢查(S410)。
當(dāng)健康檢查一旦執(zhí)行時,套接字檢查執(zhí)行模塊130獲得當(dāng)前時間信息(S420)以創(chuàng)建將被傳輸?shù)骄哂性诮】禉z查列表中注冊的套接字的客戶端的健康檢查請求消息HC_REQUEST(S430)。設(shè)置相應(yīng)套接字的客戶端的ID、當(dāng)前時間信息、和超時值在創(chuàng)建的健康檢查請求消息的頭部中被設(shè)置。
套接字檢查執(zhí)行模塊130將創(chuàng)建的健康檢查請求消息HC_REQUEST發(fā)送到設(shè)置套接字的客戶端(S440)。
圖9是根據(jù)本發(fā)明的用于定期地檢查注冊的套接字的套接字連接的服務(wù)器中的套接字檢查執(zhí)行模塊的流程圖。
參考圖9,套接字檢查執(zhí)行模塊130讀取在DB 140中設(shè)置的相應(yīng)的客戶端的狀態(tài)值(S411),以確定客戶端的狀態(tài)是否是無響應(yīng)狀態(tài)(S412)。當(dāng)客戶端的狀態(tài)是正常狀態(tài)HC_ST_NORMAL時,確定客戶端已正常地接收到消息,但是當(dāng)客戶端保持在發(fā)送狀態(tài)HC_ST_SENT中時,它被確定處在無響應(yīng)狀態(tài)中。
當(dāng)確定客戶端處在無響應(yīng)狀態(tài)中作為步驟S412的判定結(jié)果時,第一計數(shù)值被增加(S413)。作出關(guān)于第一計數(shù)值是否超過第一設(shè)置閾值Ns的判定(S414)。第一閾值Ns是服務(wù)器100等待來自還沒有響應(yīng)從其發(fā)送的客戶端200和300的響應(yīng)的最大次數(shù)。
作為判定的結(jié)果,當(dāng)?shù)谝辉O(shè)置的計數(shù)值超過第一閾值Ns時,釋放與相應(yīng)的客戶端200和300的連接(S415)。
當(dāng)客戶端200和300的狀態(tài)值是響應(yīng)狀態(tài)時,作出關(guān)于是否有錯誤響應(yīng)的判定(S416)。當(dāng)有響應(yīng)但是不同于幻數(shù)值的來自于客戶端200和300的響應(yīng)有錯誤時,第二計數(shù)值增加(S417)。然后,作出關(guān)于第二計數(shù)值是否超過第二設(shè)置的閾值Ns_w的判定(S418)。第二閾值Ns_w是服務(wù)器100等待不同于幻數(shù)值的來自于客戶端200和300的有錯誤的連續(xù)響應(yīng)的最大次數(shù)。
當(dāng)?shù)诙嫈?shù)值超過第二設(shè)置的閾值Ns_w時,調(diào)整記錄(log)或超時值(S419)。
圖10是根據(jù)本發(fā)明的在客戶端中的套接字檢查執(zhí)行模塊的套接字檢查操作的流程圖。
參考圖10,客戶端的套接字檢查執(zhí)行模塊230確定在接收周期超時之前,是否已從服務(wù)器100接收到健康檢查請求消息HC_REQUEST(S510)。當(dāng)做為步驟S510的判定結(jié)果,確定已接收到健康檢查請求消息HC_REQUEST時,健康檢查響應(yīng)消息HC_RESPONSE被發(fā)送到服務(wù)器100(S520)。
當(dāng)健康檢查響應(yīng)消息HC_RESPONSE被發(fā)送到服務(wù)器100時,在新測量接收周期之前,套接字檢查執(zhí)行模塊230初始化接收周期計數(shù)器(未顯示)(S540)。
當(dāng)在接收周期超時和超過接收周期的超時之前,沒有接收到健康檢查請求消息HC_REQUEST時,對在接收周期超時之后的時間段的數(shù)值計數(shù)以增加計數(shù)值(S550),并且作出計數(shù)值是否超過閾值的判定(S560)。當(dāng)計數(shù)值不超過閾值時,初始化接收周期計數(shù)器(S530)以執(zhí)行測量接收周期的處理(S540)。然而,當(dāng)計數(shù)值超過閾值時,釋放套接字連接(570)。
圖11是根據(jù)本發(fā)明的實施例的在服務(wù)器和客戶端之間的健康檢查消息的傳輸?shù)氖疽鈭D。
通過利用在服務(wù)器100與客戶端200和300之間定期地傳輸健康檢查數(shù)據(jù),以及兩邊的定時器,來實現(xiàn)套接字的健康檢查功能。服務(wù)器100發(fā)送健康檢查請求消息HC_REQUEST,并且響應(yīng)于健康檢查請求消息HC_REQUEST,客戶端200和300發(fā)送健康檢查響應(yīng)消息HC_RESPONSE。
在圖11中,Ts表示服務(wù)器100佳果那健康檢查請求消息HC_REQUEST發(fā)送到客戶端200和300的周期,并且當(dāng)Ts的超時發(fā)生時,服務(wù)器100檢查客戶端的狀態(tài)并將健康檢查請求消息HC_REQUEST發(fā)送到是在正常狀態(tài)中的客戶端。
參考圖11,通過發(fā)送套接字設(shè)置信息Connection Try第一客戶端200嘗試連接到服務(wù)器100。服務(wù)器100設(shè)置與第一客戶端200的連接并發(fā)送連接確認(rèn)信息Connection Ack。結(jié)果,套接字在第一客戶端200和服務(wù)器100之間被設(shè)置。
而且,通過發(fā)送套接字設(shè)置消息Connection Try,第二客戶端300嘗試連接到服務(wù)器100。服務(wù)器100設(shè)置與第二客戶端300的連接并發(fā)送連接確認(rèn)消息Connection Ack。結(jié)果,套接字連接在第二客戶端300和服務(wù)器100之間被設(shè)置。
在設(shè)置與第一和第二客戶端200和300各個套接字連接之后,服務(wù)器100在預(yù)定時間段將健康檢查請求消息HC_REQUEST發(fā)送到第一和第二客戶端200和300,以檢查套接字的套接字連接。
已從服務(wù)器100接收到健康檢查請求消息HC_REQUEST的第一和第二客戶端200和300將健康檢查響應(yīng)消息HC_RESPONSE發(fā)送到服務(wù)器100。
當(dāng)用于發(fā)送健康檢查請求消息HC_REQUEST的時間達(dá)到時,已從第一和第二客戶端200和300接收到健康檢查響應(yīng)消息HC_RESPONSE的服務(wù)器100將健康檢查請求消息HC_REQUEST發(fā)送到第一和第二客戶端200和300。對當(dāng)前正被傳輸?shù)慕】禉z查請求消息HC_REQUEST和以前所傳輸?shù)慕】禉z查請求消息HC_REQUESST設(shè)置不同的幻數(shù)值。
同樣地,已從服務(wù)器100接收到健康檢查請求消息HC_REQUEST的第一和第二客戶端200和300將健康檢查響應(yīng)消息HC_RESPONSE發(fā)送到服務(wù)器100。
圖12是根據(jù)本發(fā)明的使用健康檢查消息來發(fā)現(xiàn)和處理客戶端問題的示意圖。
Ts表示服務(wù)器100將健康檢查請求消息HC_REQUEST發(fā)送到客戶端200和300的周期,并且第一閾值Ns是服務(wù)器100等待來自沒有響應(yīng)從其發(fā)送的客戶端的響應(yīng)的最大次數(shù)。當(dāng)在時間段Ts*Ns期間沒有來自客戶端的響應(yīng)消息時,服務(wù)器100釋放連接。
參考圖12,在設(shè)置與第一和第二客戶端200和300連接的各個套接字之后,服務(wù)器100在預(yù)定時間將健康檢查請求消息HC_REQUEST發(fā)送到第一和第二客戶端200和300,以檢查套接字的套接字連接。
已從服務(wù)器100接收到健康檢查請求消息HC_REQUEST的第一和第二客戶端200和300將健康檢查響應(yīng)消息HC_RESPONSE發(fā)送到服務(wù)器100。
當(dāng)用于發(fā)送健康檢查請求消息HC_REQUEST的時間達(dá)到時,已從第一和第二客戶端200和300接收到健康檢查響應(yīng)消息HC_RESPONSE的服務(wù)器100將健康檢查請求消息HC_REQUEST發(fā)送到第一和第二客戶端200和300。對當(dāng)前正被發(fā)送的健康檢查請求消息HC_REQUEST和對以前所發(fā)送的健康檢查請求消息HC_REQUESST設(shè)置不同的幻數(shù)值。
同樣地,已從服務(wù)器100接收到健康檢查請求消息HC_REQUEST的第一客戶端200將健康檢查響應(yīng)消息HC_RESPONSE發(fā)送到服務(wù)器100。
當(dāng)在第二客戶端300中發(fā)生問題時,第二客戶端300不能將健康檢查響應(yīng)消息HC_RESPONSE發(fā)送到服務(wù)器100。諸如客戶端的電源關(guān)閉的錯誤是客戶端問題的一個實例。
當(dāng)用于發(fā)送健康檢查請求消息HC_REQUEST的時間達(dá)到時,服務(wù)器100將健康檢查請求消息HC_REQUEST發(fā)送到第一和第二客戶端200和300。對當(dāng)前發(fā)送的健康檢查請求消息HC_REQUEST和以前發(fā)送的健康檢查請求消息HC_REQUEST設(shè)置不同的幻數(shù)值。
同樣地,已從服務(wù)器100接收到健康檢查請求消息HC_REQUEST的第一客戶端200將健康檢查響應(yīng)消息HC_RESPONSE發(fā)送到服務(wù)器100。
因為還沒有解決客戶端問題,所以第二客戶端300不能將健康檢查響應(yīng)消息HC_RESPONSE發(fā)送到服務(wù)器100。
當(dāng)用于發(fā)送健康檢查請求消息HC_REQUEST的時間時達(dá)到,服務(wù)器100為第一客戶端200設(shè)置不同的幻數(shù)值,以發(fā)送健康檢查請求消息HC_REQUEST。
然而,當(dāng)未從第二客戶端300接收健康檢查響應(yīng)消息的次數(shù)超過閾值Ns時,服務(wù)器100釋放被設(shè)置與第二客戶端300的套接字連接。
圖13是根據(jù)本發(fā)明,通過利用健康檢查消息,發(fā)現(xiàn)和處理服務(wù)器問題的示意圖。
Tc表示在接收到健康檢查請求消息HC_REQUEST之后,客戶端200和300等待接收下一個健康檢查請求消息HC_REQUEST的時間段。
當(dāng)未從服務(wù)器100接收到健康檢查請求消息HC_REQUEST時,Nc表示客戶端200和300等待健康檢查請求消息HC_REQUEST的最大次數(shù)。當(dāng)在時間段Tc*Nc期間沒有消息時,釋放設(shè)置的套接字連接。
參考圖13,服務(wù)器100將健康檢查請求消息HC_REQUES發(fā)送到第一和第二客戶端200和300。響應(yīng)于健康檢查請求消息HC_REQUES,第一和第二客戶端200和300將健康檢查響應(yīng)消息HC_RESPONSE發(fā)送到服務(wù)器100。
在設(shè)置的時間,服務(wù)器100將健康檢查請求消息HC_REQUES發(fā)送到第一和第二客戶端200和300,但是,當(dāng)在服務(wù)器100中發(fā)生問題時,服務(wù)器100不能發(fā)送健康檢查請求消息。
諸如服務(wù)器的電源關(guān)閉的錯誤是服務(wù)器問題的一個實例。在此情況下,客戶端是否請求重新連接取決于應(yīng)用程序,并且因而作為一個選項。
在將健康檢查響應(yīng)消息HC_RESPONSE發(fā)送到服務(wù)器100之后,第一和第二客戶端200和300檢查是否已從服務(wù)器100接收到健康檢查請求消息。
而且,第一和第二客戶端200和300檢查在將健康檢查請求消息發(fā)送到服務(wù)器100之后所經(jīng)的時間。當(dāng)傳輸周期Tc的超時已發(fā)生的次數(shù)超過閾值Nc時,第一和第二客戶端200和300釋放與服務(wù)器100的套接字連接。
然后,第一和第二客戶端200和300嘗試一個新連接以設(shè)置與服務(wù)器100連接的新套接字。
如上描述,根據(jù)本發(fā)明用于管理套接字連接和套接字連接檢查方法的系統(tǒng)具有以下優(yōu)點。
沒有在諸如TCP的面向連接的協(xié)議中提供的套接字連接檢查、當(dāng)另一方的電源關(guān)閉時的連接釋放、和重新連接功能以公共庫的形式被完成,因此僅利用一個模塊的接口函數(shù),應(yīng)用程序就能擁有相應(yīng)的功能。
因此,各個應(yīng)用程序能具有期望的連接管理功能,以精確地檢查在服務(wù)器和客戶端之間對于系統(tǒng)管理所需要的套接字連接,并且提供快速的連接恢復(fù)或連接釋放。
此外,能簡化許多應(yīng)用模塊不得不管理套接字的連接的不必要的工作,并且可利用包括一個模塊的庫來有效地實現(xiàn)根據(jù)本發(fā)明的用于以管理套接字連接的系統(tǒng)和套接字連接檢查方法。因此,當(dāng)諸如另一方的異常電源關(guān)閉的問題或者模塊的分離在網(wǎng)絡(luò)設(shè)備之間或者在服務(wù)器聚集排列中發(fā)生時,本發(fā)明可被應(yīng)用于這樣的應(yīng)用程序。
此外,諸如在TCP連接中沒有迅速地建立重新連接或者沒有迅速地處理連接釋放的錯誤被迅速地解決。結(jié)果,能夠?qū)崿F(xiàn)在服務(wù)器和客戶端之間使連接管理集中化的系統(tǒng)管理,并且能夠改善系統(tǒng)可靠性。
前述實施例僅是示例性的并且不被理解為限制本發(fā)明。本教導(dǎo)可被可靠應(yīng)用于其它連續(xù)設(shè)備。本發(fā)明的原理能夠很容易地應(yīng)用于其它類型的設(shè)備。本發(fā)明的描述意圖是說明性的,并且不限制權(quán)利要求的范圍。許多替換、修改、和變化對本領(lǐng)域技術(shù)人員將是顯而易見的。
權(quán)利要求
1.一種系統(tǒng)包含至少一個應(yīng)用程序模塊,用于創(chuàng)建與服務(wù)器或客戶端通信所需的套接字,并且調(diào)用應(yīng)用程序接口(API)以檢查創(chuàng)建的套接字的套接字連接以管理創(chuàng)建的套接字;公共庫模塊,包含用于隨著從應(yīng)用程序模塊調(diào)用API,執(zhí)行在調(diào)用的API中設(shè)置的操作的程序;以及套接字檢查執(zhí)行模塊,通過執(zhí)行公共庫模塊中的編碼的程序而被創(chuàng)建,并且用于定期地檢查創(chuàng)建的套接字的套接字連接。
2.如權(quán)利要求1的系統(tǒng),其中API至少包括如下其中之一服務(wù)器初始化API,用于創(chuàng)建套接字檢查執(zhí)行模塊;服務(wù)器注冊API,用于在創(chuàng)建的套接字檢查執(zhí)行模塊中注冊套接字以檢查某一套接字的套接字連接;服務(wù)器注冊取消API,用于取消在套接字檢查執(zhí)行模塊中注冊套接字的注冊,并且檢查該套接字連接;服務(wù)器處理API,用于處理來自客戶端的套接字檢查消息;以及服務(wù)器釋放API,用于釋放在套接字檢查執(zhí)行模塊中注冊的所有套接字的注冊,并且釋放套接字檢查執(zhí)行模塊。
3.如權(quán)利要求1的系統(tǒng),其中公共庫模塊至少包括如下其中之一一個程序,用于執(zhí)行被定義以對應(yīng)于服務(wù)器初始化API的調(diào)用的函數(shù),以創(chuàng)建套接字檢查執(zhí)行模塊;一個程序,用于執(zhí)行被定義以對應(yīng)于服務(wù)器注冊API的調(diào)用的函數(shù)的,以在創(chuàng)建的套接字檢查執(zhí)行模塊中注冊套接字以檢查某一套接字連接;一個程序,用于執(zhí)行被定義以對應(yīng)于服務(wù)器注冊取消API的調(diào)用的函數(shù)的,以取消在套接字檢查執(zhí)行模塊中注冊的并且其套接字連接被檢查的套接字的注冊;一個程序,用于執(zhí)行被定義以對應(yīng)于服務(wù)器處理API的調(diào)用的函數(shù)的,以處理從客戶端接收的套接字檢查消息;以及一個程序,用于執(zhí)行被定義以對應(yīng)于服務(wù)器釋放API的調(diào)用的函數(shù)的,以釋放在套接字檢查執(zhí)行模塊中注冊的所有套接字的注冊合套接字檢查執(zhí)行模塊。
4.如權(quán)利要求1的系統(tǒng),其中,套接字檢查執(zhí)行模塊被包括在服務(wù)器中,并且用于定期地將套接字檢查請求消息發(fā)送到客戶端,以設(shè)置與服務(wù)器通信的某一套接字,并根據(jù)從相應(yīng)的客戶端是否已接收到套接字檢查響應(yīng)消息,定期地檢查注冊的套接字的套接字連接。
5.如權(quán)利要求1的系統(tǒng),進一步包含用于存儲創(chuàng)建套接字的客戶端的狀態(tài)信息的數(shù)據(jù)庫(DB)。
6.如權(quán)利要求5的系統(tǒng),其中,根據(jù)套接字檢查消息是否已被收發(fā),客戶端的狀態(tài)信息包括閉合狀態(tài)、發(fā)送狀態(tài)、和正常狀態(tài)。
7.如權(quán)利要求1的系統(tǒng),其中API至少包括如下其中之一客戶端初始化API,用于創(chuàng)建套接字檢查執(zhí)行模塊;客戶端處理API,用于處理從服務(wù)器接收的套接字檢查消息;以及客戶端釋放API,用于釋放在套接字檢查執(zhí)行模塊中注冊的所有套接字的注冊。
8.如權(quán)利要求1的系統(tǒng),其中公共庫模塊至少包括如下其中之一一個程序,用于執(zhí)行被定義以對應(yīng)于客戶端初始化API的調(diào)用的函數(shù),以創(chuàng)建套接字檢查執(zhí)行模塊;一個程序,用于執(zhí)行被定義以對應(yīng)于客戶端處理API的調(diào)用的函數(shù),以處理從服務(wù)器接收的套接字檢查消息;以及一個程序,用于執(zhí)行被定義以對應(yīng)于客戶端釋放API的調(diào)用的函數(shù),以釋放在套接字檢查執(zhí)行模塊中注冊的所有套接字的注冊。
9.如權(quán)利要求1的系統(tǒng),其中,套接字檢查執(zhí)行模塊包括在客戶端中,并且用于根據(jù)從服務(wù)器定期地發(fā)送的套接字檢查請求消息,將套接字檢查響應(yīng)消息發(fā)送到服務(wù)器。
10.一種方法包含通過驅(qū)動被編程以創(chuàng)建并管理與服務(wù)器合客戶端之一通信所需的套接字的應(yīng)用程序模塊來創(chuàng)建某一套接字;應(yīng)用程序模塊調(diào)用被定義以檢查創(chuàng)建的套接字的套接字連接的應(yīng)用程序接口(API);公共庫模塊,執(zhí)行用于隨著應(yīng)用程序模塊調(diào)用API,而執(zhí)行在調(diào)用的API中所設(shè)置的操作的程序;以及通過執(zhí)行在公共庫模塊中的程序而創(chuàng)建的套接字檢查執(zhí)行模式,定期地檢查創(chuàng)建的套接字的套接字連接。
11.如權(quán)利要求10的方法,其中,在定期地檢查創(chuàng)建的套接字的套接字連接中,定期地將套接字檢查請求消息發(fā)送到客戶端,以設(shè)置與服務(wù)器連接的套接字,并且根據(jù)是否已從相應(yīng)的客戶端接收到套接字檢查響應(yīng)消息來定期地檢查注冊的套接字的套接字連接。
12.如權(quán)利要求10的方法,其中,在定期地檢查創(chuàng)建的套接字的套接字連接中,根據(jù)定期地從服務(wù)器發(fā)送的套接字檢查請求消息,將套接字檢查響應(yīng)消息發(fā)送到服務(wù)器。
13.如權(quán)利要求10的方法,其中,程序包括在服務(wù)器中并被編程以執(zhí)行創(chuàng)建套接字檢查執(zhí)行模塊以檢查創(chuàng)建的套接字的套接字連接;在創(chuàng)建的套接字檢查執(zhí)行模塊中注冊相應(yīng)的套接字以檢查套接字的套接字連接;以及通過創(chuàng)建的套接字執(zhí)行模塊定期地將套接字檢查請求消息發(fā)送到客戶端以設(shè)置與服務(wù)器連接的套接字,以根據(jù)從相應(yīng)的客戶端是否已接收到套接字檢查響應(yīng)消息,定期地檢查注冊的套接字的套接字連接。
14.如權(quán)利要求10的方法,其中,程序包括在客戶端中并被編程以執(zhí)行創(chuàng)建套接字檢查執(zhí)行模塊以檢查創(chuàng)建的套接字的套接字連接;以及根據(jù)由創(chuàng)建套接字檢查執(zhí)行模塊從服務(wù)器定期地發(fā)送的套接字檢查請求消息來將套接字檢查響應(yīng)消息發(fā)送到服務(wù)器。
15.如權(quán)利要求10的方法,其中程序包括在客戶端中并被編程以執(zhí)行創(chuàng)建套接字檢查執(zhí)行模塊以檢查創(chuàng)建的套接字的套接字連接;以及當(dāng)從服務(wù)器定期地發(fā)送的套接字檢查請求消息在設(shè)定的時間段內(nèi)沒有被接收到的次數(shù)超過預(yù)定數(shù)值時,由創(chuàng)建的套接字檢查執(zhí)行模塊釋放所連接的套接字。
16.一種方法包含隨著與客戶端通信的套接字被設(shè)置,調(diào)用存儲用于檢查相應(yīng)套接字的套接字連接的程序的庫函數(shù);注冊通過執(zhí)行調(diào)用的庫函數(shù)而將被定期地檢查的套接字;以及通過執(zhí)行調(diào)用的庫函數(shù)來定期地將套接字檢查請求消息發(fā)送到客戶端,并根據(jù)是否已從相應(yīng)的客戶端接收到套接字檢查響應(yīng)消息來定期地檢查注冊的套接字的套接字連接。
17.如權(quán)利要求16的方法,其中,定期地檢查注冊的套接字的套接字連接的步驟包括獲得當(dāng)前時間信息;將所獲得當(dāng)前時間信息添加到套接字檢查請求消息中,以定期地檢查套接字的套接字連接并且將具有當(dāng)前時間信息的套接字檢查請求消息發(fā)送到設(shè)置該套接字的客戶端;以及根據(jù)是否已從客戶端接收到套接字檢查響應(yīng)消息來檢查套接字的套接字連接。
18.如權(quán)利要求17的方法,其中,檢查套接字的套接字連接的步驟包括在用于檢查套接字的套接字連接的套接字檢查請求消息已被發(fā)送到客戶端之后,確定在當(dāng)前發(fā)送周期超時之前是否已從客戶端接收到套接字檢查響應(yīng)消息;以及隨著作為確定的結(jié)果的無響應(yīng)消息,和發(fā)送周期的超時發(fā)生的次數(shù)超過預(yù)先設(shè)定的閾值,釋放套接字連接。
19.如權(quán)利要求17的方法,其中,檢查套接字的套接字連接的步驟包括確定接收的響應(yīng)消息是否是正常響應(yīng)消息,其中,隨著從客戶端接收到的響應(yīng)消息,在響應(yīng)消息中包含的時間信息與存儲在發(fā)送到客戶端的套接字檢查請求消息中的時間信息相匹配;以及對接收異常響應(yīng)消息的次數(shù)計數(shù),并且當(dāng)隨著時間信息不匹配預(yù)先設(shè)定的閾值被超過時,釋放與客戶端的套接字連接。
20.一種方法包含隨著與服務(wù)器連接的套接字被設(shè)置,調(diào)用存儲用于檢查相應(yīng)套接字的套接字連接的庫函數(shù)的程序;以及通過執(zhí)行調(diào)用的庫函數(shù)中定期地發(fā)送套接字檢查響應(yīng)消息以響應(yīng)于定期地從服務(wù)器接收的套接字檢查請求消息,并且,根據(jù)是否已定期地接收到套接字檢查請求消息來檢查被設(shè)置與服務(wù)器設(shè)置通信的套接字的套接字連接。
21.如權(quán)利要求20的方法,其中,檢查套接字的套接字連接的步驟包括在已將套接字檢查響應(yīng)消息發(fā)送到服務(wù)器之后,確定在預(yù)先設(shè)定發(fā)送周期的超時之前套接字檢查請求消息是否已從服務(wù)器接收到;以及隨著在傳輸周期的超時期間未接收到套接字檢查請求消息作為確定的結(jié)果,并且發(fā)送周期的超時已發(fā)生的次數(shù)超過預(yù)先設(shè)定的閾值,釋放套接字連接。
全文摘要
管理套接字連接的系統(tǒng)和檢查連接的方法包括至少一個應(yīng)用程序模塊用于創(chuàng)建所需的套接字用于服務(wù)器或客戶端的通信,并且調(diào)用定義的應(yīng)用程序接口(API)以檢查套接字連接以管理創(chuàng)建的套接字。當(dāng)從應(yīng)用程序模塊調(diào)用API時,公共庫模塊包含編碼的程序以執(zhí)行在API中所設(shè)置的操作;并且在公共庫模塊中,通過執(zhí)行所編碼的程序,創(chuàng)建套接字檢查執(zhí)行模塊,以定期地檢查創(chuàng)建的套接字的套接字連接。通過公共庫影響,在諸如傳輸控制協(xié)議(TCP)的面向連接協(xié)議中,未提供的套接字連接檢查,當(dāng)另一方的電源關(guān)閉時的套接字連接釋放和重新連接功能,因此,僅僅利用一個模塊的接口函數(shù),能夠提供相應(yīng)函數(shù)的應(yīng)用程序。
文檔編號H04L29/06GK1725757SQ20051008596
公開日2006年1月25日 申請日期2005年7月21日 優(yōu)先權(quán)日2004年7月21日
發(fā)明者白承學(xué) 申請人:三星電子株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1