Golang を使用してポート転送プログラムを作成する方法
1. 背景の紹介
実際のアプリケーションでは、ネットワーク データの送信と共有を実現するために、さまざまなポートを転送する必要があることがよくあります。たとえば、一部のエンタープライズ アプリケーションでは、内部アプリケーションにアクセスして管理するために、外部ネットワークから内部ネットワーク上のサーバーにアクセス要求を転送する必要があります。このプロセスでは、ポート フォワーディングを使用する必要があります。
Golang は、効率的、安全、簡潔な新興プログラミング言語です。他の一般的なプログラミング言語では、Golang で記述されたコードを呼び出すことでポート転送を実行できます。
この記事では、Golang を使用してポート転送プログラムを作成する方法を紹介し、ネットワーク プログラミングの分野における Golang の利点を示します。
2. Golang はポート フォワーディングを実装します
- 実装方法
Golang のポート フォワーディングは、標準ライブラリの net パッケージを使用してヘルプなしで操作できます。追加の依存ライブラリの数。
ポート転送の中心的な実装原則は、2 つのネットワーク接続を確立することです。1 つの接続は指定されたポートをリッスンし、もう 1 つの接続はデータ転送操作を処理します。受信したデータはゴルーチンを通じて同時に処理し、効率的なデータ転送を実現します。
コード例:
package main import ( "fmt" "net" ) func main() { listener, err := net.Listen("tcp", ":8888") if err != nil { fmt.Println("Error: ", err) return } for { conn, err := listener.Accept() if err != nil { fmt.Println("Error: ", err) continue } go handleConnection(conn) } } func handleConnection(conn net.Conn) { remote, err := net.Dial("tcp", "localhost:9999") if err != nil { fmt.Println("Error: ", err) return } defer remote.Close() defer conn.Close() go func() { _, err := copyData(conn, remote) if err != nil { fmt.Println("Error: ", err) return } }() _, err = copyData(remote, conn) if err != nil { fmt.Println("Error: ", err) return } } func copyData(dst net.Conn, src net.Conn) (int, error) { buf := make([]byte, 256) n, err := src.Read(buf) if err != nil { return 0, err } n, err = dst.Write(buf[:n]) if err != nil { return 0, err } return n, nil }
コードの説明:
上記のコードは、ローカル 8888 ポートをリッスンすることで外部ネットワーク サービスを提供します。クライアントがポート 8888 に接続すると、新しい goroutine が作成され、この goroutine がデータ転送操作を処理します。クライアントからデータを転送するときは、ローカル ポート 9999 へのネットワーク接続を確立し、この接続にデータを転送する必要があります。
- 実装効果
上記のコードの効果は、ポート 8888 をローカルでリッスンすることです。このポートへのアクセス要求が行われると、要求は次のアドレスに転送されます。ローカルポート9999。 Telnet ツールを使用して、転送が正常かどうかをテストします。
ローカル ポート 8888 に接続すると、システム コンソールに「新しい接続を受信しました」というテキスト プロンプトが 1 行出力され、監視が成功したことが示されます。次に、次のコマンドに従ってポート 9999 に接続します。
$ telnet localhost 8888
接続が成功したら、「Hello World!」などのデータを入力し、Enter キーを押します。同じデータが別の端末に表示されるはずです。これは、データがシリアル ポートを介して別のポートに正常に転送されたことを示しています。
3. 概要
この記事の導入部を通じて、ネットワーク プログラミング作業に非常に役立つ、Golang を使用してポート フォワーディングを実装する方法を習得できたと思います。
一般に、Golang には効率性、セキュリティ、シンプルさという利点があり、ネットワーク プログラミングのニーズをより効果的に実現するのに役立ちます。
以上がGolang を使用してポート転送プログラムを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









OpenSSLは、安全な通信で広く使用されているオープンソースライブラリとして、暗号化アルゴリズム、キー、証明書管理機能を提供します。ただし、その歴史的バージョンにはいくつかの既知のセキュリティの脆弱性があり、その一部は非常に有害です。この記事では、Debian SystemsのOpenSSLの共通の脆弱性と対応測定に焦点を当てます。 Debianopensslの既知の脆弱性:OpenSSLは、次のようないくつかの深刻な脆弱性を経験しています。攻撃者は、この脆弱性を、暗号化キーなどを含む、サーバー上の不正な読み取りの敏感な情報に使用できます。

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

この記事では、Debianシステムの下でPostgreSQLデータベースを監視するためのさまざまな方法とツールを紹介し、データベースのパフォーマンス監視を完全に把握するのに役立ちます。 1. PostgreSQLを使用して監視を監視するビューPostgreSQL自体は、データベースアクティビティを監視するための複数のビューを提供します。 PG_STAT_REPLICATION:特にストリームレプリケーションクラスターに適した複製ステータスを監視します。 PG_STAT_DATABASE:データベースサイズ、トランザクションコミット/ロールバック時間、その他のキーインジケーターなどのデータベース統計を提供します。 2。ログ分析ツールPGBADGを使用します

バックエンド学習パス:フロントエンドからバックエンドへの探査の旅は、フロントエンド開発から変わるバックエンド初心者として、すでにNodeJSの基盤を持っています...

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

Beegoormフレームワークでは、モデルに関連付けられているデータベースを指定する方法は?多くのBEEGOプロジェクトでは、複数のデータベースを同時に操作する必要があります。 Beegoを使用する場合...
