新四季網

使應用程式獨佔埠的方法和模塊的製作方法

2023-07-29 09:52:46 1

專利名稱:使應用程式獨佔埠的方法和模塊的製作方法
技術領域:
本發明涉及利用網絡通信技術的計算機系統,尤其涉及一種使應用程式獨佔埠的方法和模塊。
背景技術:
埠是網絡中可以被命名和尋址的通信埠,是作業系統可分配的一種資源。應用程式(即進程)通過系統調用與某埠建立連接後,傳輸層傳給該埠的數據都被相應進程所接收。相應地,應用程式發給傳輸層的數據都通過該埠輸出。
服務提供者接口(SPI,Service Provider Interface)是微軟Winsock2的一個新特性。Winsock2不僅提供了一個供應用程式訪問網絡服務的應用程式編程接口(API),還提供了由傳輸服務提供者和名字解析服務提供者實現的服務提供者接口(SPI)和WS2_32.DLL。
Winsock2的體系結構圖如圖1所示。Winsock2的傳輸服務提供者是以動態連結庫的形式(DLL)存在的,它通過WSPStartup函數為上層函數調用提供接口,而其他的函數則是通過函數指針表的方式來訪問。傳輸服務提供者的動態連結庫只有在應用程式需要時才由WS2_32.DLL載入內存中的,在不需要時則會被自動卸載。
WS2_32.DLL的主要功能是充當應用程式和傳輸服務提供者之間的媒介。每個應用程式都必須通過WS2_32.DLL和相應的傳輸服務提供者進行嚴格的數據交換。WS2_32.DLL根據應用程式在創建套接字時所提供的參數來選擇特定的傳輸服務提供者,參數包括地址族、套接字類型和協議類型,上述三個因素就決定了應用程式使用的傳輸服務提供者。WS2_32.DLL在系統中尋找第一個和上述三個因素相匹配的傳輸服務提供者,然後調用其對應的WSPStartup函數,完成應用程式和傳輸服務提供者的關聯。然後應用程式所有的通信請求都由WS2_32.DLL轉交給傳輸服務提供者來處理。
SPI支持三種協議分層協議、基礎協議和協議鏈。分層協議在基礎協議的上層,不能獨立工作,只能依靠底層的基礎協議實現更高級的通信服務。基礎協議是相對分層協議而言的,它是指能夠獨立、安全地和遠程端點實現數據通信的協議。協議鏈是將一系列的分層協議和基礎協議按一定的順序連接在一起的鏈狀結構。SPI的協議結構如圖2所示。
系統通過WSAPROTOCOL_INFOW結構中ProtocolChain成員的ChainLen值區分基礎協議、分層協議和協議鏈。分層協議的值為0,基礎協議的值為1,而協議鏈的值是大於1。
在傳輸服務提供者的實現方式中分層協議和基礎協議幾乎是相同的,它們的不同之處在於安裝。基礎協議能夠獨立地實現與遠程終端的數據交換,安裝時不需要指定協議鏈。相對於基礎協議來說,分層協議是不能獨立工作的,它們必須依賴底層的基礎協議進行數據交換,因此在安裝分層協議的時候,必須安裝相應的協議鏈,為其指定相應的基礎協議。協議鏈是由一系列分層協議和基礎協議構成的鏈狀結構,協議鏈中的第一個協議通常是一個分層協議,協議鏈中的最後一個協議通常是一個基礎協議。

發明內容
本發明提供一種利用SPI技術實現傳輸服務提供者以使應用程式獨佔埠的方法和模塊。
一方面,提出一種使應用程式獨佔埠的方法。該方法包括以下步驟A、建立各個保留埠和使用相應埠的應用程式之間的映射關係;B、收到應用程式提出的埠綁定請求時,傳輸服務提供者通過查找所建立的映射關係來判斷請求綁定的埠是否為保留埠;
C、如果不是保留埠,則接受該綁定請求;D、如果是保留埠,則判斷提出請求的應用程式是否為與相應的保留埠有映射關係的應用程式,如果是則接受綁定請求,否則拒絕該應用程式的綁定請求。
上述傳輸服務提供者動態加載了下一個傳輸服務提供者。
上述接受綁定請求進一步包括該傳輸服務提供者將該綁定請求傳遞到所加載的下一個傳輸服務提供者。
上述拒絕綁定請求進一步包括該傳輸服務提供者向該應用程式返回表示發生錯誤的參數。
上述傳輸服務提供者排序在所有傳輸服務提供者的前面。
另一方面,提出一種使應用程式獨佔埠的模塊。該模塊包括映射關係建立單元和傳輸服務提供單元,其中所述映射關係建立單元,用於建立各個保留埠和使用相應埠的應用程式之間的映射關係;所述傳輸服務提供單元進一步包括保留埠判斷部件,用於收到應用程式提出的埠綁定請求時查找映射關係建立單元所建立的映射關係,並根據請求綁定的埠是否為保留埠向綁定請求接受部件或應用程式判斷部件傳遞指令;綁定請求接受部件,用於收到指令時接受該應用程式的綁定請求;應用程式判斷部件,用於收到保留埠判斷部件的指令時判斷提出請求的應用程式是否為與判斷出的保留埠有映射關係的應用程式,並根據判斷結果向綁定請求接受部件或綁定請求拒絕部件傳遞指令;綁定請求拒絕部件,用於收到指令時拒絕該應用程式的綁定請求。
上述傳輸服務提供單元動態連結著下一個傳輸服務提供單元。
上述綁定請求接受部件進一步用於將該綁定請求傳遞到所連結的下一個傳輸服務提供單元。
上述綁定請求拒絕部件進一步用於向該應用程式返回表示發生錯誤的參數。
上述傳輸服務提供單元在所有傳輸服務提供單元中處於優先位置。
本發明主要的優點和特點如下保證特定的埠只能被特定的應用程式獨自佔用,尤其在多個應用程式企圖佔用相同埠的時候,可以確保特定的應用程式能夠正常工作。


圖1是Winsock2體系結構示意圖;圖2是SPI協議結構示意圖;圖3是按照本發明使應用程式獨佔埠的系統的組成結構示意圖。
具體實施例方式
本發明主要是利用SPI技術實現一個傳輸服務提供者,並安裝到系統所有傳輸服務提供者的最前面。當收到應用程式提出的埠綁定請求時,傳輸服務提供者進行如下處理如果埠為非保留的特定埠,則傳輸服務提供者接受其綁定請求;如果埠為保留的特定埠,則傳輸服務提供者判斷應用程式是否為特定的應用程式,如果是則接受其綁定請求,否則拒絕其綁定請求。
本發明的優選方法是以分層協議的形式實現基於TCP協議的傳輸服務提供者。該方法一個實施例的流程如下步驟1,建立一張保留埠的映射表,映射表包含若干表項,每一個表項都由兩部分構成,分別是保留的埠號和使用上述埠的應用程式。
步驟2,實現動態連結庫形式(DLL)的傳輸服務提供者,包括以下步驟步驟2.1,生成代表傳輸服務提供者的唯一標識符GUID,一般稱為全球唯一標識Globally Unique Identifier;步驟2.2,在傳輸服務提供者中實現並導出一個名為WSPStartup的函數;
步驟2.3,WSPStartup函數的實現如下步驟2.3.1,調用WSCEnumProtocols函數獲取系統中所有傳輸服務提供者的信息,存儲在元素類型為WSAPROTOCOL_INFO結構的數組中;步驟2.3.2,在步驟2.3.1得到的數組中找出ProviderId成員數值與步驟2.1所生成的GUID相等的元素,並獲得該元素對應的dwCatalogEntryId成員數值,dwCatalogEntryId成員數值是WS2_32.DLL為每個傳輸服務提供者唯一分配的標識符;步驟2.3.3,通過步驟2.3.2得到的dwCatalogEntryId成員數值,利用協議鏈的ChainEntries數組獲得下一個傳輸服務提供者的dwCatalogEntryId成員數值;步驟2.3.4,在步驟2.3.1得到的數組中找出dwCatalogEntryId成員數值與步驟2.3.3得到的dwCatalogEntryId成員數值相等的元素,並獲得該元素對應的ProviderId成員數值;步驟2.3.5,調用WSCGetProviderPath函數,利用步驟2.3.4得到的ProviderId成員數值,獲得下一個傳輸服務提供者的存儲路徑;步驟2.3.6,調用LoadLibrary函數,利用步驟2.3.5得到的存儲路徑將下一個傳輸服務提供者載入內存。通過GetProcAddress函數得到其WSPStartup函數指針,調用下一個傳輸服務提供者的WSPStartup函數,獲得下一個傳輸服務提供者的SPI函數指針列表;步驟2.3.7,實現一個名為WSPBind的函數,並且函數原型與SPI提供的WSPBind函數原型相同,並將傳輸服務提供者的SPI函數指針列表中的lpWSPBind函數指針指向上述WSPBind的函數;步驟2.4,在WSPBind函數中,獲得請求綁定的埠號碼,並查詢步驟1建立的保留埠的映射表。如果埠號碼不在映射表中,則通過步驟2.3.6得到的函數指針列表調用lpWSPBind指針對應的函數將埠綁定請求傳遞到下一個傳輸服務提供者。如果埠號碼在映射表中,則判斷應用程式是否為埠映射表中指定的應用程式,如果是則通過步驟2.3.6得到的函數指針列表調用lpWSPBind指針對應的函數將埠綁定請求傳遞到下一個傳輸服務提供者;否則直接返回SOCKET_ERROR,拒絕埠綁定請求。
步驟3,在系統中部署傳輸服務提供者,具體流程如下3.1調用WSCInstallProvider函數,利用步驟2.1生成的GUID,以分層協議形式安裝傳輸服務提供者;3.2調用WSCInstallProvider函數,重新生成一個作為協議鏈標識的GUID,安裝協議鏈,目的是為步驟3.1安裝的傳輸服務提供者指定下一個傳輸服務提供者,所述下一個傳輸服務提供者實際是以基礎協議形式實現的傳輸服務提供者;3.3調用WSCWriteProviderOrder函數,將步驟3.1和步驟3.2安裝的傳輸服務提供者置於系統所有傳輸服務提供者的最前面。
安裝完成後,本發明所述的使應用程式獨佔埠的方法從步驟2.3開始執行。
下面,參照圖3描述本發明提出的使應用程式獨佔埠的模塊。
該模塊包括映射關係建立單元和傳輸服務提供單元。該映射關係建立單元用於建立各個保留埠和使用相應埠的應用程式之間的映射關係;該傳輸服務提供單元包括保留埠判斷部件、綁定請求接受部件、應用程式判斷部件和綁定請求拒絕部件。
其中,保留埠判斷部件用於收到應用程式提出的埠綁定請求時查找映射關係建立單元所建立的映射關係,並根據請求綁定的埠是否為保留埠向綁定請求接受部件或應用程式判斷部件傳遞指令;綁定請求接受部件用於收到指令時接受該應用程式的綁定請求;應用程式判斷部件用於收到保留埠判斷部件的指令時判斷提出請求的應用程式是否為與判斷出的保留埠有映射關係的應用程式,並根據判斷結果向綁定請求接受部件或綁定請求拒絕部件傳遞指令;綁定請求拒絕部件用於收到指令時拒絕該應用程式的綁定請求。
該傳輸服務提供單元動態連結著下一個傳輸服務提供單元,該綁定請求接受模塊用於將該綁定請求傳遞到所連結的下一個傳輸服務提供單元。該綁定請求拒絕模塊用於向該應用程式返回SOCKET_ERROR。該傳輸服務提供單元在所有傳輸服務提供單元中處於優先位置。
顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和範圍。這樣,倘若本發明的這些修改和變型屬於本發明權利要求及其等同技術的範圍之內,則本發明也意圖包含這些改動和變型在內。
權利要求
1.一種使應用程式獨佔埠的方法,包括以下步驟A、建立各個保留埠和使用相應埠的應用程式之間的映射關係;B、收到應用程式提出的埠綁定請求時,傳輸服務提供者通過查找所建立的映射關係來判斷請求綁定的埠是否為保留埠;C、如果不是保留埠,則接受所述綁定請求;D、如果是保留埠,則判斷所述提出請求的應用程式是否為與相應的保留埠有映射關係的應用程式,如果是則接受綁定請求,否則拒絕所述應用程式的綁定請求。
2.如權利要求1所述的方法,其特徵在於所述傳輸服務提供者動態加載了下一個傳輸服務提供者。
3.如權利要求2所述的方法,其特徵在於所述接受綁定請求進一步包括所述傳輸服務提供者將所述綁定請求傳遞到所加載的下一個傳輸服務提供者。
4.如權利要求1所述的方法,其特徵在於所述拒絕綁定請求進一步包括所述傳輸服務提供者向所述應用程式返回表示發生錯誤的參數。
5.如權利要求1所述的方法,其特徵在於所述傳輸服務提供者排序在所有傳輸服務提供者的前面。
6.一種使應用程式獨佔埠的模塊,包括映射關係建立單元和傳輸服務提供單元,其中所述映射關係建立單元,用於建立各個保留埠和使用相應埠的應用程式之間的映射關係;所述傳輸服務提供單元進一步包括保留埠判斷部件,用於收到應用程式提出的埠綁定請求時查找映射關係建立單元所建立的映射關係,並根據請求綁定的埠是否為保留埠向綁定請求接受部件或應用程式判斷部件傳遞指令;綁定請求接受部件,用於收到指令時接受所述應用程式的綁定請求;應用程式判斷部件,用於收到保留埠判斷部件的指令時判斷提出請求的應用程式是否為與判斷出的保留埠有映射關係的應用程式,並根據判斷結果向綁定請求接受部件或綁定請求拒絕部件傳遞指令;綁定請求拒絕部件,用於收到指令時拒絕所述應用程式的綁定請求。
7.如權利要求6所述的模塊,其特徵在於所述傳輸服務提供單元動態連結著下一個傳輸服務提供單元。
8.如權利要求7所述的模塊,其特徵在於所述綁定請求接受部件,進一步用於將所述綁定請求傳遞到所連結的下一個傳輸服務提供單元。
9.如權利要求6所述的模塊,其特徵在於所述綁定請求拒絕部件,進一步用於向所述應用程式返回表示發生錯誤的參數。
10.如權利要求6所述的模塊,其特徵在於所述傳輸服務提供單元在所有傳輸服務提供單元中處於優先位置。
全文摘要
本發明公開一種使應用程式獨佔埠的方法和模塊。映射關係建立單元建立保留埠和使用相應埠的應用程式之間的映射。在傳輸服務提供單元中,保留埠判斷部件收到應用程式的埠綁定請求時查找映射關係建立單元所建立的映射,並根據請求綁定的埠是否為保留埠向綁定請求接受部件或應用程式判斷部件傳遞指令;綁定請求接受部件收到指令時接受該應用程式的綁定請求;應用程式判斷部件收到指令時判斷提出請求的應用程式是否為與判斷出的保留埠有映射關係的應用程式,並根據判斷結果向綁定請求接受部件或綁定請求拒絕部件傳遞指令;綁定請求拒絕部件收到指令時拒絕該應用程式的綁定請求。因此,保證特定的埠只能被特定的應用程式獨自佔用。
文檔編號H04L29/08GK101043527SQ20061006499
公開日2007年9月26日 申請日期2006年3月20日 優先權日2006年3月20日
發明者楊濱 申請人:騰訊科技(深圳)有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀