比特幣源碼解讀十三

我們現(xiàn)在通過(guò)對(duì)Appinit2的分析看到了很多比特幣的核心內(nèi)容颈娜,現(xiàn)在我們要看的是第十一步。也有非常核心的內(nèi)容浙宜。我們先大概了解下這步的內(nèi)容:Step 11: start node (啟動(dòng)節(jié)點(diǎn))

節(jié)點(diǎn)啟動(dòng)

一官辽。我們先看下CheckDiskSpace函數(shù) ,在main.cpp中粟瞬。

CheckDiskSpace

可以看到通過(guò)filesystem的space函數(shù)獲取比特幣的目錄的硬盤(pán)空間同仆,能過(guò)比較我們?cè)O(shè)置的最小值(nMinDiskSpace)進(jìn)行的空間判斷。這個(gè)最小值是50M裙品。定義在main.h中俗批。

要求最小硬盤(pán)空間

二。RandAddSeedPerfmon?

這個(gè)函數(shù)我們?cè)?a href="http://www.reibang.com/p/18af2d0291d5" target="_blank">《解讀十》中有過(guò)介紹市怎,這個(gè)函數(shù)就是用于生成種子私鑰的岁忘。關(guān)于什么是種子私鑰,在我以前的文章中都有過(guò)介紹区匠,《解讀十》中也有提及干像。

三,啟動(dòng)節(jié)點(diǎn)

連接到比特幣網(wǎng)絡(luò)

此函數(shù)的主要功能就是進(jìn)行了本節(jié)點(diǎn)的網(wǎng)絡(luò)發(fā)現(xiàn)驰弄,并進(jìn)行連接蝠筑,其中CNode類(lèi)為節(jié)點(diǎn)類(lèi),定義在net.h中揩懒,這類(lèi)包含了一個(gè)節(jié)點(diǎn)的所有信息什乙。然后,調(diào)用Discover函數(shù)進(jìn)行網(wǎng)絡(luò)發(fā)現(xiàn)已球。

獲取本機(jī)IP地址

這個(gè)函數(shù)讓我們認(rèn)識(shí)了在windows系統(tǒng)下和Linux系統(tǒng)下不同的獲取本地IP地址的方式臣镣。其中在Windows系統(tǒng)中首先使用gethostname()函數(shù)先取得本機(jī)的主機(jī)名,然后調(diào)用LookupHost函數(shù)根據(jù)主機(jī)名獲取本機(jī)的局部IP地址智亮。在其他系統(tǒng)中可以直接使用getifaddrs()函數(shù)直接獲取了本機(jī)IP地址忆某,并且這個(gè)函數(shù)的參數(shù)就是直接存儲(chǔ)地址信息的結(jié)構(gòu)對(duì)象。這個(gè)結(jié)構(gòu)對(duì)象是ifaddrs的指針阔蛉。其結(jié)構(gòu)定義為:

ifaddrs結(jié)構(gòu)體

其實(shí)getifaddrs函數(shù)是創(chuàng)建了一個(gè)描述本機(jī)ip地址的鏈表弃舒,其中ifa_next指向鏈表的下一個(gè)成員;ifa_name是接口名稱(chēng),以0結(jié)尾的字符串聋呢,比如eth0苗踪,lo;ifa_flags是接口的標(biāo)識(shí)位(比如當(dāng)IFF_BROADCAST或IFF_POINTOPOINT設(shè)置到此標(biāo)識(shí)位時(shí)削锰,影響聯(lián)合體變量ifu_broadaddr存儲(chǔ)廣播地址或ifu_dstaddr記錄點(diǎn)對(duì)點(diǎn)地址)通铲;ifa_netmask存儲(chǔ)該接口的子網(wǎng)掩碼;結(jié)構(gòu)體變量存儲(chǔ)廣播地址或點(diǎn)對(duì)點(diǎn)地址(見(jiàn)括弧介紹ifa_flags)器贩;ifa_data存儲(chǔ)了該接口協(xié)議族的特殊信息颅夺,它通常是NULL(一般不關(guān)注他)

我們接下來(lái)也看下是如何獲取本機(jī)的外網(wǎng)地址的吧,在上面的截圖中可以看到是新建了一個(gè)線(xiàn)程調(diào)用ThreadGetMyExternalIP來(lái)獲取本機(jī)外網(wǎng)地址的蛹稍,也叫擴(kuò)展IP地址吧黄。我們先看源碼:

獲取本機(jī)外網(wǎng)地址

通過(guò)上面的代碼可以看到為了保證可以獲取本機(jī)外網(wǎng)地址,分別使用了91.198.22,70和checkip.dyndns.org分別獲取本機(jī)外網(wǎng)地址唆姐,這個(gè)雙重循環(huán)就是分別使用兩種方式稚字,其中第一次是使用ip地址方式,第二次使用域名地址方式厦酬。我們可以分別在瀏覽器中敲入上面的兩個(gè)地址試驗(yàn)一下胆描,我的結(jié)果是使用91.198.22.70的方式獲取到了,但checkip.dyndns.org這個(gè)地址連接不到仗阅。所以這也是為什么會(huì)用雙重循環(huán)的方式昌讲,這種編程習(xí)慣也值得我們借鑒。

大家可以看下我的實(shí)驗(yàn)結(jié)果:

獲取本機(jī)外網(wǎng)IP地址

我們下面可以看下根據(jù)上面的IP地址和域名獲取本機(jī)外網(wǎng)地址的過(guò)程和處理方式

創(chuàng)建連接獲取外網(wǎng)地址

看到這里我們就已經(jīng)對(duì)啟動(dòng)節(jié)點(diǎn)時(shí)候的網(wǎng)絡(luò)連接有了一點(diǎn)了解减噪,而且內(nèi)容已經(jīng)不少了短绸。最主要是我們知道了獲取本機(jī)地址的方式和源碼里的結(jié)構(gòu)。為了好消化筹裕,就先寫(xiě)到這里了醋闭。


作者:區(qū)塊鏈研習(xí)社比特幣源碼研讀班,black

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末朝卒,一起剝皮案震驚了整個(gè)濱河市证逻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抗斤,老刑警劉巖囚企,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瑞眼,居然都是意外死亡龙宏,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)伤疙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)银酗,“玉大人,你說(shuō)我怎么就攤上這事∈蛱兀” “怎么了蛙讥?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)衅澈。 經(jīng)常有香客問(wèn)我键菱,道長(zhǎng)谬墙,這世上最難降的妖魔是什么今布? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮拭抬,結(jié)果婚禮上部默,老公的妹妹穿的比我還像新娘。我一直安慰自己造虎,他們只是感情好傅蹂,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著算凿,像睡著了一般份蝴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氓轰,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天婚夫,我揣著相機(jī)與錄音,去河邊找鬼署鸡。 笑死案糙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的靴庆。 我是一名探鬼主播时捌,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼炉抒!你這毒婦竟也來(lái)了奢讨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤焰薄,失蹤者是張志新(化名)和其女友劉穎禽笑,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蛤奥,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡佳镜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凡桥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蟀伸。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出啊掏,到底是詐尸還是另有隱情蠢络,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布迟蜜,位于F島的核電站刹孔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏娜睛。R本人自食惡果不足惜髓霞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望畦戒。 院中可真熱鬧方库,春花似錦、人聲如沸障斋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)垃环。三九已至邀层,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間遂庄,已是汗流浹背寥院。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涧团,地道東北人只磷。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像泌绣,于是被迫代替她去往敵國(guó)和親钮追。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理阿迈,服務(wù)發(fā)現(xiàn)元媚,斷路器,智...
    卡卡羅2017閱讀 134,716評(píng)論 18 139
  • 一苗沧、快速術(shù)語(yǔ)檢索 比特幣地址:(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串...
    不如假如閱讀 15,999評(píng)論 4 87
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,325評(píng)論 25 707
  • 看見(jiàn)生命的凋落與繁華 看見(jiàn)沙漠刊棕,看見(jiàn)遺落的街道吹過(guò)的風(fēng) 看不見(jiàn)與黑夜相擁的溫暖和不滅的光 看見(jiàn)藏青色的天,沒(méi)有突然...
    陶瓷兔子不會(huì)碎閱讀 123評(píng)論 0 0
  • 規(guī)避伸手 黨待逞,首先自己就不能是伸手黨甥角,建立自己的原則,規(guī)范行為识樱,影響他人嗤无。生活中沒(méi)有原則的人很多震束,這是我剛剛領(lǐng)悟到...
    微語(yǔ)world閱讀 116評(píng)論 0 0