專利名稱:使用套接字函數(shù)的通信系統(tǒng)中的套接字綁定方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機中的系統(tǒng)間通信,特別涉及一種在網(wǎng)絡(luò)計算機中使用套接字函數(shù)來建立通信的方法。
為了在計算機網(wǎng)絡(luò)中建立系統(tǒng)間通信,通常使用一種網(wǎng)絡(luò)程序。網(wǎng)絡(luò)程序用套接字函數(shù)分配套接字給每一個通信任務(wù)以建立通信。例如‘bind()’系統(tǒng)調(diào)用常用于分配套接字。
參見
圖1,一個使用‘bind()’系統(tǒng)調(diào)用的計算機網(wǎng)絡(luò)系統(tǒng)包括一個服務(wù)器10和大量的連接到服務(wù)器10的客戶機12。服務(wù)器10是一個獨立的計算機系統(tǒng),用于處理來自于客戶機12的工作請求。客戶機12也是一個獨立的計算機系統(tǒng),用于請求服務(wù)器10處理一個特定的工作。一個在服務(wù)器10和客戶機12上都存在的網(wǎng)絡(luò)程序管理服務(wù)器10和客戶機12的系統(tǒng)間通信。為了建立服務(wù)器10和客戶機12中的任一個客戶機之間的通信,要用到網(wǎng)絡(luò)程序中的套接字函數(shù),并且一個套接字被分配給這個特定的通信任務(wù)。
當前用于分配套接字的方法,是通過在網(wǎng)絡(luò)程序中使用套接字函數(shù),如圖2和3所示。圖2和3分別用圖來描述了使用面向連接協(xié)議,和無連接協(xié)議,通過‘bind()’系統(tǒng)調(diào)用(在此后,引用為套接字綁定)分配套接字的過程。
參見圖2,是關(guān)于使用面向連接協(xié)議的套接字綁定的過程,在步驟201和步驟211[socket()],服務(wù)器10和客戶機12分別指定了通信協(xié)議類型。在步驟202[bind()],服務(wù)器10分配一個唯一的名字給一個未命名的套接字。在步驟203[listen()],服務(wù)器10通知客戶機12它已準備好接收一個來自于客戶的連接,并在步驟204[auept()],等待接受一個來自于客戶機12的一個實際的連接。同時,在步驟212[connect()],客戶機12通過使用套接字描述符與服務(wù)器10建立了一個連接,并且在步驟213[write()],通過socket()指定的套接字描述符給出請求數(shù)據(jù)。在步驟205[read()],服務(wù)器10通過socket()指定的套接字描述符讀出請求數(shù)據(jù),之后根據(jù)數(shù)據(jù)請求執(zhí)行處理過程。一但執(zhí)行,在步驟206[write()],服務(wù)器10根據(jù)處理執(zhí)行的情況寫回復(fù)數(shù)據(jù)。在步驟214[read()],客戶機12讀取服務(wù)器10的回復(fù)數(shù)據(jù)。
下面參見圖3,是關(guān)于使用無連接協(xié)議的套接字綁定的處理過程,在步驟301和311[socket()],服務(wù)器10和客戶機12分別指定了通信協(xié)議的類型。在步驟302和312[bind()],服務(wù)器10和客戶機12分別分配了一個唯一的名字給未命名的套接字。在步驟313[sendto()],客戶機12通過socket()指定的套接字描述符發(fā)出請求數(shù)據(jù)。在步驟303[recvfrom()],服務(wù)器10通過socket()指定的套接字描述符接收到來自于客戶機12的請求數(shù)據(jù),并且在接收后,服務(wù)器10根據(jù)請求數(shù)據(jù)執(zhí)行處理過程。此后,在步驟304[sendto()],服務(wù)器10發(fā)出與請求數(shù)據(jù)相應(yīng)的回復(fù)數(shù)據(jù)。在步驟314[recvfrom()],客戶機12收到來自于服務(wù)器10的回復(fù)數(shù)據(jù)。
如果在分配唯一名字給未命名的套接字的時候,‘bind()’系統(tǒng)調(diào)用失敗,則‘bind()’系統(tǒng)調(diào)用將立即被重新調(diào)用。但是,如果‘bind()’系統(tǒng)調(diào)用被反復(fù)的重新調(diào)用且繼續(xù)失敗,則會引起一個時間延遲,并且在這個時間延遲中將產(chǎn)生一個系統(tǒng)調(diào)用錯誤。當前的技術(shù)方法是在系統(tǒng)異常時反復(fù)重試系統(tǒng)調(diào)用。這種重試不需浪費系統(tǒng)資源,同時不會增加系統(tǒng)負荷。本發(fā)明概述因此,本發(fā)明的一個目的是提供一種在使用套接字函數(shù)建立系統(tǒng)間通信時,當檢測到不正?,F(xiàn)象時,刪除反復(fù)系統(tǒng)調(diào)用的方法。
本發(fā)明的另外一個目的是提供一種在使用套接字函數(shù)建立系統(tǒng)間通信時避免浪費系統(tǒng)資源的方法。
本發(fā)明還有一個目的是提供一種在使用套接字函數(shù)建立系統(tǒng)間通信時,防止增加系統(tǒng)負荷的方法。
根據(jù)本發(fā)明的一個所示實施例,用于使用套接字函數(shù)建立系統(tǒng)間通信的套接字綁定方法延遲了在‘bind()’系統(tǒng)調(diào)用結(jié)果為失敗時重新調(diào)用‘bind()’系統(tǒng)調(diào)用的時間。重新調(diào)用的操作不是在失敗之后立即執(zhí)行,而是在一個預(yù)定的時間之后。這個預(yù)定時間基于已建立的系統(tǒng)用于關(guān)閉一個異常套接字的時間延遲。附圖簡介本發(fā)明的上述和其它目的,特性以及優(yōu)點,將通過下面帶有附圖的示例實施例的詳細描述變得更加明顯圖1是一個方框圖,顯示了一個通用計算機網(wǎng)絡(luò)系統(tǒng);圖2是一個根據(jù)當前技術(shù)使用面向連接協(xié)議的套接字綁定的方法的流程圖;圖3是一個根據(jù)當前技術(shù)使用無連接協(xié)議的套接字綁定的方法的流程圖;圖4是一個根據(jù)本發(fā)明的一個所示實施例的使用面向連接協(xié)議的套接字綁定的流程圖;圖5是一個根據(jù)本發(fā)明的另一個所示實施例的使用無連接協(xié)議的套接字綁定的流程圖。
優(yōu)先實施例的詳細描述下面將通過參照附圖詳細描述本發(fā)明的一個實施例,在這些圖中用相同的參考號表示相同的部件。進而,應(yīng)該明白許多特性(例如詳細的電路元件)是僅通過一個例子來說明的,以便更好地理解本發(fā)明,而沒有這些特性本發(fā)明是可以實施的。此外,應(yīng)該注意,如果確信對相關(guān)的當前技術(shù)的描述在描述本發(fā)明的概念時不是必需的,則這些詳細描述會被人為地去除。技術(shù)要求中用到的短語是考慮到發(fā)明中的功能而定義的,并且它是根據(jù)通常的實踐或用戶或芯片設(shè)計者而可被替換的。建議短語的定義基于對特性的描述。
一種根據(jù)本發(fā)明的套接字綁定的方法將通過參照圖4和5進行詳細的描述,圖4是一個使用面向連接協(xié)議的套接字綁定的實施例的流程圖,圖5是一個使用無連接協(xié)議的套接字綁定的實施例的流程圖。套接字綁字方法的特性在于在‘bind()’系統(tǒng)調(diào)用結(jié)果為失敗時,重新調(diào)用‘bind()’系統(tǒng)調(diào)用的操作不是立即執(zhí)行,而是在一個預(yù)定的時間之后,這個預(yù)定的時間基于已建立的系統(tǒng)本身(例如,一個用于關(guān)閉異常套接字的時間延遲)。
參見圖4,在步驟401和411[socket()],服務(wù)器10和客戶機12分別指定了通信協(xié)議的類型。在步驟402[bind()],服務(wù)器10分配唯一的名字給未命名的套接字,并在步驟403檢查‘bind()’系統(tǒng)調(diào)用的結(jié)果是成功或是失敗。如果‘bind()’系統(tǒng)調(diào)用成功,則服務(wù)器10走到步驟405。否則,如果‘bind()’系統(tǒng)調(diào)用失敗,服務(wù)器10將在步驟404等待一個預(yù)定時間,之后將返回步驟402重新調(diào)用‘bind()’系統(tǒng)調(diào)用。這里的預(yù)定時間是指系統(tǒng)自身的時間延遲,即關(guān)閉最初的不正常的套接字的時間延遲。
在步驟405[listen()],服務(wù)器10通知它已準備好接受一個來自于客戶機12的連接,并且在步驟406[accept()],等待接收一個來自于客戶機12的實際的連接。在步驟412[connect()],客戶機12通過套接字描述符建立與服務(wù)器10的一個連接,并在步驟413[write()],通過由socket()指定的套接字描述符寫入請求數(shù)據(jù)。之后,在步驟407[read()],服務(wù)器10通過由socket()指定的套接字描述符讀出請求數(shù)據(jù),并根據(jù)請求數(shù)據(jù)執(zhí)行處理過程。此后,在步驟408[write()],服務(wù)器10根據(jù)執(zhí)行的處理過程寫入回復(fù)數(shù)據(jù)。在步驟414[read()],客戶機12讀出來自于服務(wù)器10的回復(fù)數(shù)據(jù)。
參照圖5,是關(guān)于一種使用無連接協(xié)議的套接字綁定的過程,在步驟501和511[socket()],服務(wù)器10和客戶機12分別指定了通信協(xié)議的類型。在步驟502和512[bind()],服務(wù)器10和客戶機12分別分配一個唯一名字給一個未命名的套接字。在步驟503和513,服務(wù)器10和客戶機12各自檢查‘bind()’系統(tǒng)調(diào)用的結(jié)果是成功還是失敗。如果‘bind()’系統(tǒng)調(diào)用成功,則服務(wù)器10和客戶機12將分別走到步驟505和515。否則,如果‘bind()’系統(tǒng)調(diào)用失敗,服務(wù)器10和客戶機12分別走到步驟504和514,等待一個預(yù)定時間,此后分別返回步驟502和503,以重新執(zhí)行‘bind()’系統(tǒng)調(diào)用。這里,預(yù)定時間指系統(tǒng)自身的時間延遲,如前所述。
如果在步驟513‘bind()’系統(tǒng)調(diào)用成功,那么在步驟515[sendto()],客戶機12將通過由socket()指定的套接字描述符發(fā)出請求數(shù)據(jù)。進而,如果在步驟503‘bind()’系統(tǒng)調(diào)用成功,在步驟505[recvfrom()],服務(wù)器10將通過由socket()指定的套接字描述符接收請求數(shù)據(jù)。服務(wù)器10接收到來自客戶機12的請求數(shù)據(jù)之后,將根據(jù)請求數(shù)據(jù)執(zhí)行處理過程。此后,在步驟506[sendto()]服務(wù)器10發(fā)出與數(shù)據(jù)請求相應(yīng)的回復(fù)數(shù)據(jù)。接著在步驟516[recvfrom()],客戶機12收到來自于服務(wù)器10的回復(fù)數(shù)據(jù)。
如前所述,當‘bind()’系統(tǒng)調(diào)用失敗時,‘bind()’系統(tǒng)調(diào)用將在一小段預(yù)定時間之后被重新調(diào)用。因此,能夠避免浪費系統(tǒng)資源和增加系統(tǒng)負荷。
雖然在上面詳細的描述了本發(fā)明的優(yōu)先實施例,但是要清楚的認識到這里講到的許多在當前技術(shù)中可能出現(xiàn)的基本的發(fā)明的概念的更改和變化仍然包含在后面的權(quán)利要求中定義的本發(fā)明的實質(zhì)和范圍中。
權(quán)利要求
1.一種通過用套接字函數(shù)在計算機網(wǎng)絡(luò)中建立系統(tǒng)間通信的分配套接字的方法,這種方法包括以下步驟在分配套接字過程中集成一個時間延遲,激活一個時間延遲以響應(yīng)失敗的套接字分配;及在一小段時間延遲之后重試套接字分配。
2.根據(jù)權(quán)利要求1的方法,其中上述時間延遲是基于系統(tǒng)關(guān)閉一個異常套接字的時間延遲確定的。
3.根據(jù)權(quán)利要求1的方法,其中上述集成,激活和重試的步驟是在面向連接協(xié)議系統(tǒng)中執(zhí)行的。
4.根據(jù)權(quán)利要求1的方法,其中上述集成,激活和重試的步驟是在無連接協(xié)議系統(tǒng)中執(zhí)行的。
5.在用套接字函數(shù)建立系統(tǒng)間通信時使用的套接字綁定的方法,該方法包括以下步驟檢測到‘bind()’系統(tǒng)調(diào)用的一個失??;及在一小段預(yù)定時間之后重新調(diào)用‘bind()’系統(tǒng)調(diào)用。
6.根據(jù)權(quán)利要求5的方法,其中上述的預(yù)定時間是由基于系統(tǒng)關(guān)閉一個異常的套接字的時間延遲確定的。
7.根據(jù)權(quán)利要求5的方法,其中上述的檢測和重試步驟是在面向連接協(xié)議的系統(tǒng)中執(zhí)行的。
8.根據(jù)權(quán)利要求5的方法,其中上述的檢測和重試的步驟是在無連接協(xié)議系統(tǒng)中執(zhí)行的。
全文摘要
一個計算機網(wǎng)絡(luò)系統(tǒng)包括一個用于通過套接字函數(shù)建立在客戶和服務(wù)器系統(tǒng)間通信的網(wǎng)絡(luò)程序。如果通過用socket()函數(shù)建立系統(tǒng)間通信時導(dǎo)致‘bind()’系統(tǒng)調(diào)用失敗,則‘bind()’系統(tǒng)調(diào)用將在一個預(yù)定的一小段時間之后被重新調(diào)用。這里的預(yù)定時間是一個基于關(guān)閉一個異常套接字的時間延遲而定的時間。
文檔編號H04L29/06GK1182240SQ9712246
公開日1998年5月20日 申請日期1997年11月6日 優(yōu)先權(quán)日1996年11月7日
發(fā)明者黃永吉, 金秀炫, 金鍾勛 申請人:三星電子株式會社