簡體   English   中英

通過 Internet 的 TCP 套接字連接

[英]TCP socket connection over internet

我正在做一個需要服務器和客戶端之間連接的項目。 我是通過添加 TCP 套接字來實現的。

這是代碼部分:服務器:

    ServerSocket welcomeSocket = new ServerSocket(80);
    while(true)
    {
        Socket connectionSocket = welcomeSocket.accept();
        WorkerThread wt = new WorkerThread(connectionSocket, id);
        Thread t = new Thread(wt);
        t.start();
        workerThreadCount++;

    }

客戶 :

        Socket skt = new Socket("192.168.0.108", 80); // The IP address is from cmd->ipconfig/all-> IPv4 Address
        outToServer = new PrintWriter(skt.getOutputStream(), true);
        inFromServer = new BufferedReader(new InputStreamReader(skt.getInputStream()));

當兩端都在同一設備中/在同一個 WiFi 下時,這一切都有效。但我不明白如何通過互聯網創建連接。

請幫助提供明確的步驟。

這里:

Socket skt = new Socket("192.168.0.108", 80);

那是本地地址。 如果您想擁有一台可在 Internet 上訪問的服務器,那么該服務器需要擁有其全球公共 IP 地址!

換句話說:您必須確保可以通過 Internet 以某種方式訪問​​服務器。 例如,通過轉向一些托管服務器的服務提供商,然后您可以配備您的代碼!

192.168 地址的全部目的是僅在本地子網中定義。

或者,您必須檢查您的 ISP 是否有一項服務,即 ISP 為您的連接分配一個 IP 地址,並允許來自 Internet 的呼叫轉到您的“位置”。

意思是:當您要接聽電話時,您需要一部已連接電話網的電話!

為了通過 WAN 連接到套接字,您必須將該端口轉發到本地設備。 這可以在路由器的設置中完成。

192.168.0.108 --> 那是你的本地 IP 地址。

這可以在您的本地網絡上使用,而無需任何端口轉發要求。 但是,要通過 WAN 使用它,請執行以下步驟:

第 1 步:在 Google 上搜索路由器的型號和端口轉發,了解如何將端口 80 轉發到您的本地 IP 地址。 警告:在您的本地設備上使用靜態 IP 地址以防止您的 IP 在重新啟動后更改。

第 2 步:訪問IP Chicken等網站並找到您的外部 IP 地址。

然后,您可以使用以下方法連接到您的套接字:

Socket skt = new Socket("[EXTERNALIP]", 80);

請注意:除非您有業務網絡,否則您的外部 IP 地址可能會不時更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM