關於socket的一點思考——外網串連內網?

來源:互聯網
上載者:User

 

       前段時間用Java又做了一個通訊軟體——山寨糗糗,一般這麼簡單的做一個聊天軟體之後都會稱之為區域網路聊天工具,那麼它到底能不能實現外網訪問內網然後進行通訊呢?這個問題在俺的腦海中縈繞許久。

       因為以前做的就是兩個簡單的用戶端直接通訊,不通過伺服器,因此怎麼由一個內網中的機器訪問到另一個內網中的機器確實不好想想(maybe是能力有限)。不過這次用Java實現是通過一個伺服器端來完成用戶端通訊的,那麼可不可以由一個內網訪問到一個外網,然後再由外網訪問到內網呢?

       首先看一張圖,軟體在區域網路內進行通訊的:


       這樣用戶端發送訊息到伺服器,然後伺服器把訊息轉寄到指定的用戶端,這裡用戶端和伺服器屬於同一區域網路,因此理解起來沒有什麼問題。這裡需要考慮一下socket,這是進行訊息轉寄的核心。需要注意的是如果這裡面的所有用戶端都是外網地址的話也是可以進行通訊的,因為都是直接相連的。

       然後看一下通過外網通訊的:


       這樣內網使用者A首先登陸,這樣呢就在外網伺服器上建立了一個socket串連,然後每次進行通訊的時候外網都會通過這個socket來發送訊息。就是這樣,外網和內網直接進行了通訊,其核心也就是socket。(個人理解)

      

       網上有好多人發文章問qq的通訊是如何進行的,有人回複說通過尋找路由表,找到地址,還有其他的一些答案,不過說實話我也不知道那個是對的。

      

       最後總結,其實重點就在socket上,這個socket裡面到底包含的是什麼,我目前還不知道,所以上面的文章都來自自己的假想。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.