我的項(xiàng)目中由于還沒(méi)有加入轉(zhuǎn)發(fā)服務(wù)器,因此暫時(shí)有3臺(tái)對(duì)外服務(wù)器,服務(wù)器與服務(wù)器之間暫時(shí)用內(nèi)網(wǎng)連接,今天將服務(wù)器放到雙網(wǎng)卡的服務(wù)器,發(fā)現(xiàn)竟然將服務(wù)器內(nèi)網(wǎng)地址告訴給客戶(hù)端來(lái)連接,很明顯這是錯(cuò)的!
馬上著手解決這個(gè)問(wèn)題:是否可以根據(jù)配置,對(duì)某幾條連接自動(dòng)從gethostname中獲取到內(nèi)網(wǎng)或者外網(wǎng)地址?事實(shí)證明是錯(cuò)誤的!這里有一個(gè)例子:
某公司的電話(huà)只能對(duì)內(nèi)打,對(duì)外打只能靠私人手機(jī)。如果 A正在用私人手機(jī)跟公司外的B打電話(huà),此時(shí),B想打C的手機(jī),但是B不知道C的號(hào)碼。但同時(shí),A只知道C的內(nèi)線(xiàn)號(hào),但不知道其手機(jī)。這種情況下,B只有找公司的前臺(tái)D要到 C的手機(jī)號(hào),因?yàn)锳,C在進(jìn)入公司時(shí)就已經(jīng)注冊(cè)過(guò)他們的手機(jī)號(hào)。這樣,B就成功的打通了C的手機(jī)號(hào)。
這是一種解決方法,也就是說(shuō),在現(xiàn)有的服務(wù)器管理的上層,再做一層平臺(tái)服務(wù)器,其他服務(wù)器到這臺(tái)服務(wù)器獲得自己在外網(wǎng)的地址,然后對(duì)需要進(jìn)行外網(wǎng)聯(lián)系的服務(wù)器組和客戶(hù)端之間傳輸使用外網(wǎng)地址。
還有一種方法:
C首先將自己的手機(jī)號(hào)告訴A,之后B與A聯(lián)系后,得到C的手機(jī)號(hào),而不是其內(nèi)網(wǎng)號(hào),即可聯(lián)通
這種方法的原理就是:將要讓客戶(hù)端轉(zhuǎn)接的某臺(tái)服務(wù)器的地址的公網(wǎng)ip保存在配置文件里,在讀取后將這個(gè)地址告訴給列表服務(wù)器,這樣客戶(hù)端連過(guò)來(lái)就會(huì)獲得一個(gè)正確的外網(wǎng)地址