本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種局域網(wǎng)內(nèi)工作站之間的消息傳遞方法。
背景技術(shù):
對(duì)于由多臺(tái)工作站組成的復(fù)雜系統(tǒng),各個(gè)工作站之間需要彼此傳遞消息和指令,協(xié)同工作,來(lái)完成某項(xiàng)任務(wù)。消息及指令傳輸?shù)姆€(wěn)定性直接影響了系統(tǒng)的穩(wěn)定性,因此,建立一套穩(wěn)定有效的消息傳遞機(jī)制非常重要。
傳統(tǒng)的消息傳遞方式是以服務(wù)器——工作站的形式進(jìn)行傳遞的。每臺(tái)工作站需要先與服務(wù)器進(jìn)行連接,當(dāng)一臺(tái)工作站需要與另一臺(tái)工作站進(jìn)行通信時(shí),先把消息傳遞到服務(wù)器,也就是消息服務(wù)中心,然后由服務(wù)端傳遞到需要通信的工作站上。
所以,通過(guò)現(xiàn)有的方式進(jìn)行消息傳遞,除了工作站,還需要有服務(wù)器作為中轉(zhuǎn),若要保持工作站之間良好的通信傳輸,服務(wù)器需要具有較高的穩(wěn)定性。
技術(shù)實(shí)現(xiàn)要素:
為了解決這一問(wèn)題,需要提出一種無(wú)中心服務(wù)器的多對(duì)多工作站通信方案。
本發(fā)明提供一種局域網(wǎng)內(nèi)工作站之間的消息傳遞方法,所述方法包括:本地工作站向其所在局域網(wǎng)內(nèi)發(fā)送一廣播消息,并接收所述局域網(wǎng)中的其它工作站返回的第一反饋消息,以與所述其它工作站建立連接;所述本地工作站向已建立連接的所述其它工作站發(fā)送一第一網(wǎng)絡(luò)消息,并接收所述其它工作站返回的第二反饋消息。
一個(gè)實(shí)施例中,本地工作站向其所在局域網(wǎng)內(nèi)發(fā)送一廣播消息,并接收所述局域網(wǎng)中的其它工作站返回的第一反饋消息,包括:?jiǎn)?dòng)所述本地工作站的通信服務(wù)端;所述通信服務(wù)端向所述局域網(wǎng)內(nèi)發(fā)送所述廣播消息并接收所述局域網(wǎng)中的其它工作站接收到所述廣播消息后返回的所述第一反饋消息。
一個(gè)實(shí)施例中,所述本地工作站向已建立連接的所述其它工作站發(fā)送一第一網(wǎng)絡(luò) 消息,并接收所述其它工作站返回的第二反饋消息,包括:
啟動(dòng)所述本地工作站的通信客戶端,并建立所述通信客戶端與所述通信服務(wù)端之間的連接;所述通信客戶端發(fā)送所述第一網(wǎng)絡(luò)消息至所述通信服務(wù)端;所述通信服務(wù)端將所述第一網(wǎng)絡(luò)消息發(fā)送至所述其它工作站,并接收所述其它工作站接收到所述第一網(wǎng)絡(luò)消息后返回的所述第二反饋消息。
一個(gè)實(shí)施例中,所述方法還包括:所述通信服務(wù)端讀取所述本地工作站的注冊(cè)表以獲取并記錄所述本地工作站的IP地址;所述通信服務(wù)端在接收到一第二網(wǎng)絡(luò)消息時(shí),比較所述第二網(wǎng)絡(luò)消息的發(fā)送端IP地址和所述本地工作站的IP地址;當(dāng)所述發(fā)送端IP地址和所述本地工作站的IP地址不相同時(shí),所述本地工作站發(fā)送反饋消息;其中,所述通信服務(wù)端檢測(cè)到所述本地工作站的網(wǎng)絡(luò)連接發(fā)生變化時(shí),重新讀取所述本地工作站的IP地址。
一個(gè)實(shí)施例中,所述方法還包括:所述通信服務(wù)端接收到所述第一反饋消息后,將發(fā)送所述第一反饋消息的其它工作站的IP地址記錄在一第一消息列表中;所述通信服務(wù)端與所述第一消息列表中的IP地址對(duì)應(yīng)的工作站進(jìn)行點(diǎn)對(duì)點(diǎn)發(fā)送消息。
一個(gè)實(shí)施例中,所述通信服務(wù)端對(duì)發(fā)送至所述其它工作站的所述第一網(wǎng)絡(luò)消息進(jìn)行封裝,封裝后的所述第一網(wǎng)絡(luò)消息包含一第一消息頭,所述第一消息頭用于區(qū)分所述本地工作站和所述局域網(wǎng)內(nèi)部分其它工作站構(gòu)成的本地消息收發(fā)系統(tǒng)與所述局域網(wǎng)內(nèi)其它消息收發(fā)系統(tǒng);所述其它工作站將其第二消息頭和所述第一消息頭進(jìn)行比較,若相同,則處理所述第一網(wǎng)絡(luò)消息,并將所述第二反饋消息返回至所述本地工作站。
一個(gè)實(shí)施例中,所述通信服務(wù)端對(duì)發(fā)送至所述其它工作站的所述第一網(wǎng)絡(luò)消息進(jìn)行封裝,封裝后的所述第一網(wǎng)絡(luò)消息包含一全局唯一標(biāo)識(shí)符;所述通信服務(wù)端在發(fā)送所述第一網(wǎng)絡(luò)消息后的一設(shè)定時(shí)間內(nèi)未收到帶有所述全局唯一標(biāo)識(shí)符的所述第二反饋消息時(shí),重新發(fā)送所述第一網(wǎng)絡(luò)消息,直到收到帶有所述全局唯一標(biāo)識(shí)符的所述第二反饋消息或重新發(fā)送的次數(shù)超過(guò)一設(shè)定次數(shù);以及所述其它工作站返回所述第二反饋消息時(shí),一同將所述全局唯一標(biāo)識(shí)符返回至所述本地工作站。
一個(gè)實(shí)施例中,所述方法還包括:所述通信客戶端向所述本地工作站上的其它通信客戶端發(fā)送所述第一網(wǎng)絡(luò)消息;以及所述通信客戶端向所述通信服務(wù)端發(fā)送一消息過(guò)濾標(biāo)簽;所述通信服務(wù)端對(duì)一待發(fā)送網(wǎng)絡(luò)消息的標(biāo)簽和所述消息過(guò)濾標(biāo)簽進(jìn)行比 較,若所述消息過(guò)濾標(biāo)簽包含所述待發(fā)送網(wǎng)絡(luò)消息的標(biāo)簽,則將所述待發(fā)送網(wǎng)絡(luò)消息發(fā)送至所述通信客戶端,否則不發(fā)送。
一個(gè)實(shí)施例中,所述通信服務(wù)端檢測(cè)到所述本地工作站的網(wǎng)絡(luò)連接發(fā)生變化時(shí),重新向所述局域網(wǎng)內(nèi)發(fā)送所述廣播消息,以更新所述本地工作站與所述其它工作站之間的連接。
一個(gè)實(shí)施例中,所述其它工作站接收到所述廣播消息后,將所述本地工作站的IP地址記錄至一第二消息列表。
本發(fā)明通過(guò)在局域網(wǎng)內(nèi),一臺(tái)或者多臺(tái)工作站之間,通過(guò)網(wǎng)絡(luò)進(jìn)行相互連接,能夠?qū)崿F(xiàn)工作站彼此之間的消息的發(fā)送和接收,從而實(shí)現(xiàn)局域網(wǎng)內(nèi)無(wú)中心服務(wù)器多對(duì)多工作站間的消息傳遞。本發(fā)明的每個(gè)工作站上可啟動(dòng)一個(gè)通信服務(wù)端軟件,用于消息的中轉(zhuǎn)和發(fā)送;通信服務(wù)端與本工作站上的通信客戶端及其它工作站上的通信服務(wù)端建立連接;工作站上的軟件模塊調(diào)用一個(gè)通信客戶端動(dòng)態(tài)庫(kù)(Dll),從而實(shí)現(xiàn)與本工作站通信服務(wù)軟件的連接。軟件模塊將消息通過(guò)通信客戶端發(fā)送給本工作站通信服務(wù)端,本站服務(wù)端再通過(guò)網(wǎng)絡(luò)發(fā)送給其它工作站的通信服務(wù)端,最終能夠?qū)⑾鬟f給其它工作站上層軟件模塊。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其它的附圖。在附圖中:
圖1是本發(fā)明一實(shí)施例中工作站的結(jié)構(gòu)示意圖;
圖2是本發(fā)明一實(shí)施例中局域網(wǎng)內(nèi)多臺(tái)工作站建立連接的示意圖;
圖3是本發(fā)明實(shí)施例的局域網(wǎng)內(nèi)工作站之間的消息傳遞方法的流程示意圖;
圖4是本發(fā)明一實(shí)施例中不同工作站之間建立連接的方法的流程示意圖;
圖5是本發(fā)明一實(shí)施例中工作之間發(fā)送網(wǎng)絡(luò)消息的方法的流程示意圖;
圖6是本發(fā)明一實(shí)施例中本地工作站排除本身所發(fā)送廣播消息干擾的方法的流程示意圖;
圖7是本發(fā)明一實(shí)施例中點(diǎn)對(duì)點(diǎn)發(fā)送方法的流程示意圖;
圖8是本發(fā)明一實(shí)施例中本地工作站發(fā)送網(wǎng)絡(luò)消息的流程示意圖;
圖9是本發(fā)明一實(shí)施例中其他工作站接收網(wǎng)絡(luò)消息的方法的流程示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例做進(jìn)一步詳細(xì)說(shuō)明。在此,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,但并不作為對(duì)本發(fā)明的限定。
圖1是本發(fā)明一實(shí)施例中工作站的結(jié)構(gòu)示意圖。如圖1所示,本發(fā)明實(shí)施例中的工作站100可以包含通信服務(wù)端101和通信客戶端102。其中,通信服務(wù)端101、通信客戶端102的個(gè)數(shù)可以是一個(gè)或多個(gè),具體數(shù)目可視需要而定。例如,工作站100中僅包含一個(gè)通信服務(wù)端101,同時(shí)可包含多個(gè)通信客戶端102。工作站100上可裝有多個(gè)軟件應(yīng)用程序,用以控制通信服務(wù)端101和通信客戶端102執(zhí)行動(dòng)作。
圖2是本發(fā)明一實(shí)施例中局域網(wǎng)內(nèi)多臺(tái)工作站建立連接的示意圖。如圖2所示,局域網(wǎng)200中包含多個(gè)工作站100。工作站100可通過(guò)其中的通信服務(wù)端101彼此建立連接。
本發(fā)明提供一種局域網(wǎng)內(nèi)工作站之間的消息傳遞方法。該方法通過(guò)廣播消息使局域網(wǎng)內(nèi)的工作站之間建立穩(wěn)定連接,并在已建立連接的工作站之間進(jìn)行網(wǎng)絡(luò)消息的發(fā)送和接收,能夠?qū)崿F(xiàn)局域網(wǎng)內(nèi)工作站多對(duì)多的消息傳送。
圖3是本發(fā)明實(shí)施例的局域網(wǎng)內(nèi)工作站之間的消息傳遞方法的流程示意圖。如圖3所示,局域網(wǎng)內(nèi)可以通過(guò)網(wǎng)絡(luò)連接的工作站之間進(jìn)行消息傳遞方法,可包括如下步驟:
S110:本地工作站向其所在局域網(wǎng)內(nèi)發(fā)送一廣播消息,并接收所述局域網(wǎng)中的其它工作站返回的第一反饋消息,以與所述其它工作站建立連接;
S120:所述本地工作站向已建立連接的所述其它工作站發(fā)送一第一網(wǎng)絡(luò)消息,并接收所述其它工作站返回的第二反饋消息。
本發(fā)明實(shí)施例中,用“本地工作站”的描述表示發(fā)送網(wǎng)絡(luò)消息的工作站,用“其它工作站”的描述表示接收網(wǎng)絡(luò)消息的工作站。一個(gè)本地工作站可同時(shí)給多個(gè)其它工作站發(fā)送用于建立連接的廣播消息和上述網(wǎng)絡(luò)消息,上述多個(gè)其它工作站也可返回用于建立連接的反饋消息和對(duì)應(yīng)所接收網(wǎng)絡(luò)消息的反饋消息。換言之,若將上述“其它 工作站”作為發(fā)送網(wǎng)絡(luò)消息的工作站,上述“本地工作站”也可作為接收網(wǎng)絡(luò)消息的工作站。簡(jiǎn)言之,“本地工作站”和“其它工作站”的描述僅是發(fā)送和接收網(wǎng)絡(luò)消息的角度不同,并不限定局域網(wǎng)中該中“本地工作站”的個(gè)數(shù)。所以,以本發(fā)明實(shí)施例的方法能夠?qū)崿F(xiàn)局域網(wǎng)內(nèi)多個(gè)工作站對(duì)多個(gè)工作站的消息傳遞。
在上述步驟S110中,該本地工作站可通過(guò)多種網(wǎng)絡(luò)協(xié)議,例如UDP(User DatagramProtocol,用戶數(shù)據(jù)包協(xié)議)網(wǎng)絡(luò)協(xié)議,向其所在局域網(wǎng)內(nèi)發(fā)送廣播消息,例如UDP廣播。該本地工作站可在各種時(shí)刻,例如在該本地工作站啟動(dòng)時(shí),發(fā)送該廣播消息。上述其它工作站接收到該廣播消息后,返回第一反饋消息。從而通過(guò)廣播消息可使其它工作站識(shí)別本地工作站,通過(guò)反饋消息可使本地工作站識(shí)別上述其它工作站。如此一來(lái),上述本地工作站和其它工作站可以建立連接。
上述廣播消息可包含該本地工作站的IP地址。其它工作站在接收到該廣播消息時(shí),可將該廣播消息中的該本地工作站的IP地址提取出來(lái),并可發(fā)送至一第二消息列表中,以在必要的時(shí)候讀取使用。
局域網(wǎng)中工作站之間的網(wǎng)絡(luò)連接可能會(huì)發(fā)生變化,例如,在某個(gè)消息收發(fā)系統(tǒng)中,某原有工作站停止與其它工作站進(jìn)行消息傳遞,或者有新的工作站加入該消息收發(fā)系統(tǒng),與其它工作站進(jìn)行消息傳遞,再或者由于線路故障等原因?qū)е戮W(wǎng)絡(luò)連接臨時(shí)中斷。此時(shí),本地工作站的通信服務(wù)端在檢測(cè)到本地工作站的網(wǎng)絡(luò)連接狀態(tài)發(fā)生了變化時(shí),會(huì)可重新向該局域網(wǎng)內(nèi)發(fā)送上述廣播消息,以更新本地工作站與其它工作站之間的連接,從而保證消息的正確并正常地傳遞。
在上述步驟S120中,當(dāng)本地工作站有消息需要向上述其它工作站發(fā)送時(shí),例如本地工作站向上述其它工作站發(fā)送該網(wǎng)絡(luò)消息。上述其它工作站接收到該網(wǎng)絡(luò)消息時(shí),向該本地工作站返回一反饋消息,例如第一反饋消息。該本地工作站通過(guò)該第一反饋消息可得知上述其它工作站成功接收到該網(wǎng)絡(luò)消息。
本發(fā)明實(shí)施例,通過(guò)在不同工作站之間建立連接,并以此為橋梁直接進(jìn)行消息傳遞,無(wú)需各工作之間協(xié)同工作,也不需要通過(guò)服務(wù)器進(jìn)行消息中轉(zhuǎn),從而可以提供局域網(wǎng)內(nèi)各工作站之間消息傳遞的穩(wěn)定性。
圖4是本發(fā)明一實(shí)施例中不同工作站之間建立連接的方法的流程示意圖。如圖4所示,圖3所示的局域網(wǎng)內(nèi)工作站之間的消息傳遞方法的步驟S110中,該本地工作站向其所在局域網(wǎng)內(nèi)發(fā)送一廣播消息,并接收所述局域網(wǎng)中的其它工作站返回的第一 反饋消息的方法,可包括步驟:
S111:?jiǎn)?dòng)所述本地工作站的通信服務(wù)端;
S112:所述通信服務(wù)端向所述局域網(wǎng)內(nèi)發(fā)送所述廣播消息并接收所述局域網(wǎng)中的其它工作站接收到所述廣播消息后返回的所述第一反饋消息。
本發(fā)明實(shí)施例中,該本地工作站可通過(guò)其上的通信服務(wù)端發(fā)送和接收各種消息。在上述步驟S111中,在通過(guò)本地工作站的通信服務(wù)端發(fā)送該廣播消息之前,先啟動(dòng)該本地工作站的通信服務(wù)端,其啟動(dòng)方式可以根據(jù)需要選擇或設(shè)置,例如,在工作站啟動(dòng)時(shí),其通信服務(wù)端自動(dòng)啟動(dòng),或者人工啟動(dòng),從而滿足不同的消息收發(fā)狀態(tài)要求。
較佳實(shí)施例中,為了保證該本地工作站的通信服務(wù)端保持在啟動(dòng)狀態(tài),可以通過(guò)該本地工作站上的軟件應(yīng)用程序?qū)崟r(shí)執(zhí)行監(jiān)測(cè)該本地工作站的通信服務(wù)端的啟動(dòng)狀態(tài)。當(dāng)該本地工作站上的軟件應(yīng)用程序檢測(cè)到該本地工作站的通信服務(wù)端未啟動(dòng)時(shí),會(huì)控制通信服務(wù)端自動(dòng)啟動(dòng)。
圖5是本發(fā)明一實(shí)施例中工作之間發(fā)送網(wǎng)絡(luò)消息的方法的流程示意圖。如圖5所示,圖3所示的局域網(wǎng)內(nèi)工作站之間的消息傳遞方法的步驟S120中,該本地工作站向已建立連接的其它工作站發(fā)送一第一網(wǎng)絡(luò)消息,并接收其它工作站返回的第二反饋消息的方法,可包括步驟:
S121:?jiǎn)?dòng)所述本地工作站的通信客戶端,并建立所述通信客戶端與所述通信服務(wù)端之間的連接;
S122:所述通信客戶端發(fā)送所述第一網(wǎng)絡(luò)消息至所述通信服務(wù)端;
S123:所述通信服務(wù)端將所述第一網(wǎng)絡(luò)消息發(fā)送至所述其它工作站,并接收所述其它工作站接收到所述第一網(wǎng)絡(luò)消息后返回的所述第二反饋消息。
本發(fā)明實(shí)施例中,網(wǎng)絡(luò)消息可來(lái)自于該本地工作站的通信客戶端。通信客戶端可根據(jù)工作站上的各種軟件應(yīng)用程序的指令發(fā)送網(wǎng)絡(luò)消息。消息客戶端可根據(jù)該軟件應(yīng)用程序的指令將網(wǎng)絡(luò)消息發(fā)送至通信服務(wù)端,再通過(guò)該本地工作站的通信服務(wù)端將網(wǎng)絡(luò)消息發(fā)送至其它工作站。
在上述步驟S121中,可通過(guò)工作站上的軟件應(yīng)用程序(例如啟動(dòng)時(shí)),調(diào)用通信客戶端的動(dòng)態(tài)庫(kù)(Dynamic Link Library,DLL),啟動(dòng)該本地工作站上的通信客戶端,建立該本地工作站上的通信客戶端和該本地工作站上的通信服務(wù)端之間的連接,以實(shí)現(xiàn)通信客戶端和通信服務(wù)端之間的消息傳遞。
在上述步驟S122中,本地工作站上的軟件應(yīng)用程序控制發(fā)送網(wǎng)絡(luò)消息時(shí),可通過(guò)本地工作站上的通信客戶端將網(wǎng)絡(luò)消息發(fā)送給本地工作站上的通信服務(wù)端。在上述步驟S123中,本地工作站上的通信服務(wù)端可將來(lái)自通信客戶端的網(wǎng)絡(luò)消息進(jìn)行處理,例如封裝,并將封裝后的網(wǎng)絡(luò)消息發(fā)送至其它工作站。封裝后的網(wǎng)絡(luò)消息,除了包含消息內(nèi)容本身,還可包含其它信息,例如消息頭、全局唯一標(biāo)識(shí)符(Globally Unique Identifier,GUID)等。
在上述步驟S122中,不僅可通過(guò)本地工作站上的通信客戶端將網(wǎng)絡(luò)消息發(fā)送給本地工作站上的通信服務(wù)端,還可通過(guò)該本地工作站上的通信服務(wù)端將來(lái)自本地工作站上的通信客戶端/消息客戶端的網(wǎng)絡(luò)消息轉(zhuǎn)發(fā)給本地工作站上其它通信客戶端,以使其它通信客戶端得知上述通信客戶端/消息客戶端所發(fā)送網(wǎng)絡(luò)消息的相關(guān)信息。
在上述步驟S123中,上述其它工作站可通過(guò)其上的通信服務(wù)端接收網(wǎng)絡(luò)消息,當(dāng)接收到上述第一網(wǎng)絡(luò)消息后,上述其它工作站的通信服務(wù)端可從該第一網(wǎng)絡(luò)消息中提取出消息內(nèi)容,再將該消息內(nèi)容轉(zhuǎn)發(fā)給本機(jī)的通信客戶端。若該第一網(wǎng)絡(luò)消息中包含除消息內(nèi)容以外的信息,例如全局唯一標(biāo)識(shí)符(GUID),上述其它工作站的通信客戶端可將該全局唯一標(biāo)識(shí)符(GUID)一并提取出來(lái)。另外,上述其它工作站還可通過(guò)其上的通信服務(wù)端返回上述第二反饋消息。在返回該第二反饋消息時(shí),可一并返回其它信息,例如上述本地工作站的全局唯一標(biāo)識(shí)符(GUID),如此一來(lái),本地工作站可得知上述第二反饋消息是對(duì)其所發(fā)送的第一網(wǎng)絡(luò)消息的反饋消息,從而得知該第一網(wǎng)絡(luò)消息已發(fā)送成功。
本地工作站在發(fā)送廣播消息至其它工作站時(shí),可同時(shí)接收其它工作站發(fā)送的廣播消息,同樣地,本地工作站可在接收到其它工作站發(fā)送的廣播消息返回反饋消息至其它工作站。本地工作站作為局域網(wǎng)中的一個(gè)工作站,也可接收到自身發(fā)送的廣播消息。若對(duì)自身發(fā)送的廣播消息返回反饋消息,會(huì)給本地工作站帶來(lái)不必要的干擾。
一個(gè)實(shí)施例中,本地工作站上的軟件應(yīng)用程序控制通信客戶端發(fā)送消息時(shí),可以選擇只將消息傳遞給本工作站上其它軟件應(yīng)用程序控制的通信客戶端或通信服務(wù)端,或者只傳遞給其它工作站的軟件應(yīng)用程序控制的通信服務(wù)端,或者兩者都傳遞。
圖6是本發(fā)明一實(shí)施例中本地工作站排除本身所發(fā)送廣播消息干擾的方法的流程示意圖。如圖6所示,在上述步驟S110中,建立本地工作站和其它工作站之間的連接時(shí),本地工作站排除本身所發(fā)送廣播消息干擾的方法,可包括步驟:
S210:所述通信服務(wù)端讀取所述本地工作站的注冊(cè)表以獲取并記錄所述本地工作站的IP地址;
S220:所述通信服務(wù)端在接收到一第二網(wǎng)絡(luò)消息時(shí),比較所述第二網(wǎng)絡(luò)消息的發(fā)送端IP地址和所述本地工作站的IP地址;
S230:當(dāng)所述發(fā)送端IP地址和所述本地工作站的IP地址不相同時(shí),所述本地工作站發(fā)送反饋消息。
在上述步驟S210中,本地工作站的通信服務(wù)端可在多個(gè)時(shí)刻讀取本地工作站的IP地址,例如,本地工作站的通信服務(wù)端啟動(dòng)時(shí)或該通信服務(wù)端接收到一廣播消息/第二網(wǎng)絡(luò)消息時(shí)。本地工作站的通信服務(wù)端在讀取了本地工作站的IP地址后,可將本地工作站的IP地址記錄下來(lái),例如存儲(chǔ)至本機(jī)的IP地址列表中,之后,可根據(jù)需要從該IP地址列表讀取本地工作站的IP地址。
此外,本地工作站的通信服務(wù)端所讀取的本地工作站的IP地址可用作其它用途,例如,將本地工作站的IP地址發(fā)送給其它工作站,以使其它工作站識(shí)別發(fā)送消息的工作站。
本地工作站的通信服務(wù)端可用于監(jiān)測(cè)本地工作站上網(wǎng)絡(luò)連接的變化情況,當(dāng)本地工作站的通信服務(wù)端檢測(cè)到本地工作站的網(wǎng)絡(luò)連接發(fā)生變化時(shí),例如IP地址被修改,可從本地工作站的注冊(cè)表中重新讀取該本地工作站所匹配的IP地址,以保證獲得正確的本地工作站的IP地址。
較佳地,當(dāng)本地工作站的通信服務(wù)端重新讀取到本地工作站的IP地址后,本地工作站可重新向局域網(wǎng)內(nèi)發(fā)送廣播消息,例如UDP廣播,以更新本地工作站與其它工作站的連接。
在上述步驟S220中,該第二網(wǎng)絡(luò)消息中可包含該發(fā)送端的IP地址,該本地工作站的通信服務(wù)端可將該發(fā)送端的IP地址從該第二網(wǎng)絡(luò)消息中提取出來(lái)。從而可將該發(fā)送端的IP地址與該本地工作站的IP地址進(jìn)行比較。
在上述步驟S230中,當(dāng)上述發(fā)送端IP地址和本地工作站的IP地址不相同時(shí),則認(rèn)為該第二網(wǎng)絡(luò)消息不是該本地工作站發(fā)送的,該本地工作站則可發(fā)送/返回反饋消息至該發(fā)送端,該發(fā)送端可以是上述其它工作站中任一個(gè)工作站。當(dāng)上述發(fā)送端IP地址和本地工作站的IP地址相同時(shí),即認(rèn)為上述第二網(wǎng)絡(luò)消息是該本地工作站自身所發(fā)送的廣播消息,則不發(fā)送反饋消息。如此一來(lái),通過(guò)比對(duì)IP地址可排除本地工 作站的通信服務(wù)端的自身干擾。類似地,本地工作站也可用同樣地方法排除其它各種自身所發(fā)送網(wǎng)絡(luò)消息的干擾。
本發(fā)明實(shí)施例中,本地工作站可在有消息需要發(fā)送給其它工作站時(shí),通過(guò)本發(fā)明實(shí)施例的方法,與其它工作站建立連接并傳遞網(wǎng)絡(luò)消息?;蛘撸镜毓ぷ髡究芍苯优cIP地址記錄在第一消息列表內(nèi)的其它工作站進(jìn)行消息傳遞。
例如,本地工作站與上述其它工作站傳遞過(guò)一次網(wǎng)絡(luò)消息后,便將上述其它工作站的IP地址記錄至本地工作站上的一個(gè)第一消息列表中。若再次需要發(fā)送網(wǎng)絡(luò)消息,則可不用重新通過(guò)廣播消息建立本地工作站與上述其它工作站之間的連接,而是直接將網(wǎng)絡(luò)消息發(fā)送至上述第一消息列表中IP地址對(duì)應(yīng)的其它工作站。從而,進(jìn)行工作站之間的點(diǎn)對(duì)點(diǎn)消息發(fā)送。
圖7是本發(fā)明一實(shí)施例中點(diǎn)對(duì)點(diǎn)發(fā)送方法的流程示意圖。如圖7所示,局域網(wǎng)中工作之間點(diǎn)對(duì)點(diǎn)發(fā)送網(wǎng)絡(luò)消息的方法,可包括步驟:
S310:所述通信服務(wù)端接收到所述第一反饋消息后,將發(fā)送所述第一反饋消息的其它工作站的IP地址記錄在一第一消息列表中;
S320:所述通信服務(wù)端與所述第一消息列表中的IP地址對(duì)應(yīng)的工作站進(jìn)行點(diǎn)對(duì)點(diǎn)發(fā)送消息。
本發(fā)明實(shí)施例中,本地工作站通過(guò)與其它工作站首次傳遞網(wǎng)絡(luò)消息建立連接時(shí),將其它工作站的IP地址記錄在一第一消息列表中,并依據(jù)該第一消息列表中的IP地址與其它工作站傳遞后續(xù)的網(wǎng)絡(luò)消息。從而可以避免本地工作站與其它工作站重新建立相同的連接關(guān)系,以提高局域網(wǎng)內(nèi)工作站之間消息傳送的效率。
再如圖2所示,局域網(wǎng)200中可包含至少三個(gè)工作站100,任意至少兩個(gè)工作站100可以構(gòu)成一個(gè)消息收發(fā)系統(tǒng),所以,局域網(wǎng)200可包括至少兩個(gè)消息收發(fā)系統(tǒng)。例如,由局域網(wǎng)中的其中幾臺(tái)工作站組成一個(gè)消息收發(fā)系統(tǒng),由另外幾臺(tái)工作站組成另一個(gè)消息收發(fā)系統(tǒng),或者,不同的消息收發(fā)系統(tǒng)中均包含至少兩個(gè)工作站,且包含共同的工作站。不同消息收發(fā)系統(tǒng)之間所傳遞的網(wǎng)絡(luò)消息可不同。
圖8是本發(fā)明一實(shí)施例中本地工作站發(fā)送網(wǎng)絡(luò)消息的流程示意圖。如圖8所示,本發(fā)明實(shí)施例的消息傳遞方法,在實(shí)施上述步驟S123時(shí),本地工作站的通信服務(wù)端可對(duì)發(fā)送至其它工作站的第一網(wǎng)絡(luò)消息進(jìn)行封裝,生成封裝消息(步驟S301)。其中,該封裝消息可包含一消息頭,例如,第一消息頭,該消息頭可用于區(qū)分該第一網(wǎng) 絡(luò)消息所屬的消息收發(fā)系統(tǒng)和其它消息收發(fā)系統(tǒng)。
具體地,例如,當(dāng)上述其它工作站的通信服務(wù)端/消息服務(wù)端收到上述第一網(wǎng)絡(luò)消息時(shí),可從該第一網(wǎng)絡(luò)消息中提取出該第一消息頭,并可與上述其它工作站的通信服務(wù)端的第二消息頭進(jìn)行比對(duì),若相同,則上述其它工作站可處理該第一網(wǎng)絡(luò)消息,并將該第二反饋消息返回至該本地工作站;若不同,則上述其它工作站可不處理該第一網(wǎng)絡(luò)消息,也可不發(fā)送該第二反饋消息。其中,消息頭可為一個(gè)由用戶設(shè)置的字符串,可以在配置文件中進(jìn)行修改。不同的消息收發(fā)系統(tǒng)可設(shè)置不同的消息頭,用以區(qū)分彼此。如此一來(lái),可防止兩個(gè)消息收發(fā)系統(tǒng)之間的消息傳遞發(fā)生混亂。
如圖8所示,本地工作站的通信服務(wù)端可對(duì)發(fā)送至所述其它工作站的第一網(wǎng)絡(luò)消息進(jìn)行封裝,生成封裝消息(步驟S301)。封裝后的第一網(wǎng)絡(luò)消息(封裝消息)可包含一全局唯一標(biāo)識(shí)符(Globally Unique Identifier,GUID)。當(dāng)其它工作站上的通信服務(wù)端收到第一網(wǎng)絡(luò)消息時(shí),可將其中的全局唯一標(biāo)識(shí)符(GUID)提取出來(lái),并可在發(fā)送第二反饋消息至本地工作站時(shí),將此全局唯一標(biāo)識(shí)符(GUID)返回至本地工作站。該全局唯一標(biāo)識(shí)符(GUID)可視需要作為各種用途,例如用于驗(yàn)證消息是否發(fā)送成功。
如圖8所示,上述局域網(wǎng)內(nèi)工作站之間的消息傳遞方法,還可對(duì)消息是否發(fā)送成功進(jìn)行驗(yàn)證(步驟S302~S305)。例如,本地工作站可將上述本地工作站的全局唯一標(biāo)識(shí)符(GUID)同反饋消息一起發(fā)送至該本地工作站。本地工作站的通信服務(wù)端向其它工作站的通信服務(wù)端發(fā)送上述第一網(wǎng)絡(luò)消息后,可等待一設(shè)定時(shí)間(步驟S302)。在等待該固定時(shí)間后,可判斷是否有反饋消息(步驟S303),若本地工作站接收到帶有上述全局唯一標(biāo)識(shí)符的反饋消息(第二反饋消息),則認(rèn)為消息發(fā)送成功,則結(jié)束該消息發(fā)送過(guò)程;若沒(méi)有收到帶有上述全局唯一標(biāo)識(shí)符的反饋消息(第二反饋消息),則根據(jù)發(fā)送消息列表/第一消息列表中IP地址重新向其它工作站發(fā)送上述第一網(wǎng)絡(luò)消息,并判斷已發(fā)送或重新發(fā)送消息的次數(shù)是否超過(guò)一設(shè)定次數(shù)(步驟S304),若發(fā)送或重新發(fā)送消息的次數(shù)已達(dá)到或超過(guò)一設(shè)定次數(shù),則認(rèn)為消息發(fā)送失敗;若還未達(dá)到或超過(guò)該設(shè)定次數(shù),則根據(jù)發(fā)送消息列表/第一消息列表中的IP地址給其它工作站重新發(fā)送網(wǎng)絡(luò)消息,直到發(fā)送或重新發(fā)送消息的次數(shù)達(dá)到或超過(guò)該設(shè)定次數(shù),停止發(fā)送消息。從而,可以有效驗(yàn)證本地工作站是否成功發(fā)送網(wǎng)絡(luò)消息,并通過(guò)多次重復(fù)發(fā)送消息,可盡可能確保其它工作站收到網(wǎng)絡(luò)消息。
若重新發(fā)送次數(shù)超過(guò)設(shè)置的次數(shù),則認(rèn)為對(duì)方工作站已經(jīng)失去連接,可從本地工作站記錄的發(fā)送消息列表/第一消息列表中移除此工作站的IP地址(步驟S305),以避免再次重復(fù)發(fā)送無(wú)用消息。
再如圖8所示,本地工作站的通信客戶端可向本地工作站的通信服務(wù)端發(fā)送一消息過(guò)濾標(biāo)簽(步驟S306)。本地工作站的通信服務(wù)端可將網(wǎng)絡(luò)消息發(fā)送至本地工作站上的其它通信客戶端。本地工作站的通信服務(wù)端可對(duì)一待發(fā)送網(wǎng)絡(luò)消息的標(biāo)簽和上述消息過(guò)濾標(biāo)簽進(jìn)行比較,若上述消息過(guò)濾標(biāo)簽包含上述待發(fā)送網(wǎng)絡(luò)消息的標(biāo)簽,則可將上述待發(fā)送網(wǎng)絡(luò)消息發(fā)送至本地工作站的其它通信客戶端(步驟S307),否則可不發(fā)送,以避免本地工作站上的其它通信客戶端收到不必要的消息。
一個(gè)實(shí)施例中,所述其它工作站接收到所述廣播消息后,將所述本地工作站的IP地址記錄至一消息發(fā)送列表/第二消息列表。
圖9是本發(fā)明一實(shí)施例中其他工作站接收網(wǎng)絡(luò)消息的方法的流程示意圖。如圖9所示,其他工作站收到一網(wǎng)絡(luò)消息后,可首先判斷該網(wǎng)絡(luò)消息是否為本機(jī)消息(步驟S401),例如通過(guò)對(duì)比發(fā)送端和本機(jī)的IP地址判斷;若該網(wǎng)絡(luò)消息是本機(jī)發(fā)送的網(wǎng)絡(luò)消息,則結(jié)束動(dòng)作,若不是本機(jī)消息,則可對(duì)該網(wǎng)絡(luò)消息進(jìn)行處理,例如拆封該網(wǎng)絡(luò)消息,可提取消息頭、消息內(nèi)容及全局唯一標(biāo)識(shí)符(GUID)等一個(gè)或多個(gè)信息,并可判斷提取的消息頭是否與本機(jī)的消息頭匹配(步驟S402);若提取的消息頭不與本機(jī)的消息頭匹配,則可認(rèn)為該消息不應(yīng)發(fā)給該工作站,則結(jié)束動(dòng)作,若匹配,則判斷發(fā)送端的IP地址是否已在該工作站的消息發(fā)送列表/第一消息列表中(步驟S403);若不在,則將該發(fā)送端的IP地址添加到消息發(fā)送列表/第一消息列表中,若在,則判斷該網(wǎng)絡(luò)消息中是否包含消息過(guò)濾標(biāo)簽(步驟S404);若包含,則向該工作站的通信客戶端發(fā)送消息內(nèi)容,若不包含,則判斷是否需要發(fā)送反饋消息至發(fā)送端(步驟S405);若不需要,則結(jié)束消息傳遞過(guò)程,若需要?jiǎng)t發(fā)送包含全局唯一標(biāo)識(shí)符(GUID)的反饋消息至發(fā)送端。
在圖9所示的其他工作站接收網(wǎng)絡(luò)消息的具體實(shí)施例中,消息頭、全局唯一標(biāo)識(shí)符(GUID)、消息過(guò)濾標(biāo)簽等多個(gè)信息及多個(gè)步驟,可依據(jù)上述各實(shí)施例進(jìn)行選擇,本發(fā)明實(shí)施例僅用于清楚說(shuō)明其他工作站接收網(wǎng)絡(luò)消息的方法,并非用以限定本發(fā)明。
本發(fā)明實(shí)施例的方法適用于局域網(wǎng)內(nèi)多對(duì)多工作站通信領(lǐng)域,每個(gè)工作站上可啟 動(dòng)一個(gè)通信服務(wù)端軟件,用于消息的中轉(zhuǎn)和發(fā)送。通信服務(wù)端與本工作站上的通信客戶端及其它工作站上的通信服務(wù)端建立連接。工作站上的軟件應(yīng)用程序執(zhí)行調(diào)用一個(gè)通信客戶端動(dòng)態(tài)庫(kù)(Dll),實(shí)現(xiàn)與本工作站通信服務(wù)軟件的連接。軟件應(yīng)用程序執(zhí)行將消息通過(guò)通信客戶端發(fā)送給本工作站通信服務(wù)端,本站服務(wù)端再通過(guò)網(wǎng)絡(luò)發(fā)送給其它工作站的通信服務(wù)端,最終傳遞給上工作站上層軟件應(yīng)用程序控制的通信客戶端。本發(fā)明實(shí)施例,通過(guò)與其他工作站建立連接,可以不使用服務(wù)器中轉(zhuǎn),即可實(shí)現(xiàn)局域網(wǎng)中任兩個(gè)工作站之間的消息傳遞,如此能夠使消息傳遞更穩(wěn)定。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其它可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其它可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其它可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限定本發(fā) 明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。