C socket TCP打洞可行嗎?

2021-05-25 22:42:02 字數 520 閱讀 3779

a,b位於不同的nat後的兩台pc,s位於公網:首先a,b分別於s建立連線,當連線建立起來後s便知道了a與b各自的外網ip+port;然後由s將他們的外網ip+port發往對方,這樣a與b都知道了對方的外網ip+port,此刻假如a想和b通話,則a再次繫結port(這個port與a連線s時的不一樣),並且listen();同時a經過s將a的新port傳送給b,這樣b就知道了a的外網ip+newport,再由b主動連線b,此刻為什麼b無法連線上a呢?於此同時b再在這個newport上bind()並listen(),之後讓a再次主動連線b,這樣又能連線上嗎?

我的理解:雖然a 繫結了新埠,但是當它對映到nat——a後,埠就不等於newport了,所以b連線不上a,同理a也連線不上b咯!

另外關於p2p中的客戶端,是不是相當於把socket的c與s端融合到一起了!是不是客戶端同時也在監聽連線,當然也是不是必須繫結埠!

tcp打洞能行嗎?

大學程式之路可行嗎?

我是一名大二學生,本學期才分專業。從大一當我接觸到c語言程式設計時,我很感興趣即下決心要選計算機專業,把計算機專業的課程認真學好。但是在這個學期當要 選專業的時候,我在不同的 看了不少關於這方面的文章,都是老手們,高手們的一些體會和建議,有不少人說建議別選軟體這行,又累又沒時間,沒很多錢,沒 女朋友...

工程造價專業轉行IT,可行嗎?

我大學學的是工程造價專業,在某工地實習期間,由於當時工地事故全地區停工休整1個月。這個事件也讓我體會到了工地工作的危險性,並且冬冷夏熱,沒有休息,還要跟著工程到處去跑,所以自己也不想幹這個行業了。了解到頂測科技的軟體測試實訓上崗之後,對網際網路產生興趣,覺得這個公司也挺靠譜。鑑於當時我還沒有畢業,而...

80 20法則在軟體設計中可行嗎?

對於80 20法則,我想很多人都比較熟悉。該法則認為,你80 的成就來自於20 的努力 或者80 的收益來自20 的客戶。運用到軟體領域,那就是你80 的客戶往往只使用你軟體20 的功能。因此我們自然會問,在軟體開發的過程中能否只留其中20 的功能,而砍掉其餘的80 呢?著名博主 john d.co...