パブリック ネットワーク アクセスに公開された Java ローカル ソケット サーバー [イントラネットへの侵入]

Java サーバーのデモ環境

  • jdk1.8
  • フレームワーク: springboot+maven
  • 開発ツール: IDEA

pom ファイルの 3 番目のパッケージによってカプセル化された netty フレームワークの Maven 座標を導入します。

<dependency>
   <groupId>io.github.fzdwx</groupId>
   <artifactId>sky-http-springboot-starter</artifactId>
   <version>0.10.6</version>
</dependency>

*: springbootweb スターターは、pom ファイルでコメント アウトする必要があります. Web スターターはデフォルトで tomcat サービスを開始するため、netty サービスと競合します。
ここに画像の説明を挿入

Javaサーバーを作成し、外部呼び出しに便利なインターフェースモードで作成します

@GetMapping("/getConnect")
public void getConnect(HttpServerRequest request){
    
    

    request.upgradeToWebSocket(ws -> {
    
    

    ws.mountOpen(h->{
    
    

           ws.send("连接成功,开始聊天吧!");
       });

     ws.mountText(s -> {
    
    

         System.out.println(s);

             //对方回复
             System.out.println("客户端回复: "+s);

             //获取控制台输入的值
             Scanner scanner =new Scanner(System.in);

             String next = scanner.next();

             ws.send(next);

     });

    });

}

サービスを開始すると、開始が成功したことを示す次の情報が表示され、公開されたポートのデフォルト: 9999

ここに画像の説明を挿入

次に、cpolar を介してローカル サービスをパブリック ネットワークに公開します。cpolar のインストールと使用の詳細については、次の記事を参照してください。

リモート企業イントラネット サーバー [イントラネット浸透]

アクセスするブラウザを開きます: http://127.0.0.1:9200 cpolar web ui インターフェイス、tcp ポート 9999 でトンネルを作成します。

ここに画像の説明を挿入
: トンネルは一時的な TCP アドレスとポートを選択します, これは 24 時間以内に変更されます. TCP アドレスを修正する必要がある場合は、プロフェッショナル パッケージにアップグレードして TCP アドレスを修正できます!

ステータスを表示 -> オンライン トンネル、作成したトンネルのパブリック ネットワーク アドレスとポートをコピー

ここに画像の説明を挿入
この時点で、websocket サーバーはローカル localhost からパブリック ネットワークに公開されています。次に、パブリック ネットワークをテストしてソケット サーバー接続にアクセスするためのクライアントを作成します。

go ベースのソケット クライアントを例にとると、パブリック ネットワークを介して Java ソケット サーバーに接続します。

  • バージョン: 1.19
  • 開発ツール: VSCODE

git 経由で websocket フレームワークをダウンロードします。

go get github.com/gorilla/websocket

ここに画像の説明を挿入

GO クライアントを作成します。注: Host 値は、上でコピーしたトンネルのパブリック ネットワーク アドレスです!!

package main

import (
    "fmt"
    "log"
    "net/url"

    "github.com/gorilla/websocket"
)

func main() {
    
    

    // 定义服务端的地址

    u := url.URL{
    
    
        Scheme: "ws",
        Host:   "3.tcp.vip.cpolar.cn:10793", //地址为复制隧道的公网地址
        Path:   "/eth/getConnect"} //服务端controller 映射地址

    // 与服务端建立连接
    c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
    if err != nil {
    
    
        log.Fatal("dial:", err)
    }
    defer c.Close()

    // 阻塞主线程
    down := make(chan byte)

    // 启动一个线程,读取从服务端发送过来的数据
    go func() {
    
    
        for {
    
    
            _, message, _ := c.ReadMessage()
            fmt.Println("服务端回复:" + string(message))
        }
    }()

    //启动一个线程输入消息
    go func() {
    
    

        for {
    
    
            var input string

            fmt.Scanln(&input)

            c.WriteMessage(websocket.TextMessage, []byte(input))

        }

    }()

    for {
    
    
        <-down
    }
}

次に、サービスを開始し、サーバーに接続します。サーバーから返された単語は、接続が成功したことを示します

ここに画像の説明を挿入

クライアントはコンソールに情報を入力し、Enter をクリックします。

ここに画像の説明を挿入

サーバーは、クライアントから送信された情報を受信して​​出力します

ここに画像の説明を挿入

次に、サーバー コンソールにメッセージを入力し、Enter キーを押します。ここに画像の説明を挿入

クライアントはサーバーから応答メッセージを受信し、接続は成功します

ここに画像の説明を挿入

上記で設定したアドレスはランダムに変更されるため、24 時間以内に tcp パブリック ネットワーク アドレスを修正し (プロフェッショナル パッケージをアップグレードする必要があります)、公式 Web サイト www.cpolar.com を開き、[予約] をクリックして、tcp アドレスを予約します。 .

ここに画像の説明を挿入

予約済みアドレスをコピーし、Web UI インターフェイスを開き、予約済みアドレス情報を更新および追加します

ここに画像の説明を挿入
ここに画像の説明を挿入

更新された tcp 固定アドレスをコピーします

ここに画像の説明を挿入

Go クライアントの接続サーバーのアドレスを置き換えるだけです

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/CpolarLisa/article/details/128443897