2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

二つのストリームで双方向で通信するツール「StreamRelay.NET.exe」と「StreamRelay.jar」

Last updated at Posted at 2017-05-23

2つのストリームを結びデータを双方向でやりとりするプログラム「StreamRelay.NET.exe」と「StreamRelay.jar」を作ったので、その使い方の紹介。


簡単なアーキテクチャから。

図

プログラムの引数で、二つのストリームのソース(実体)を指定することで、そのストリーム間でデータのやり取りが行われる。
例えば、片方のストリームのソースをコンソール(標準)にして、もう片方のストリームをねっワーク(TCP)にすれば、netcat の代替となる。


ストリームの名称

便宜上、ネットワークサーバになれる側のストリームを「ローカル(Local)」と呼称し、なれない側のストリームを「リモート(Remote)」と呼称している
この呼称が、オプション指定に頻繁に出てくることになる。
例えば、local側をコンソール、remote側をネットワーク(TCP)とすれば、netcatのクライアント・モードと同等になる。


ダウンロードとインストール

基本的には、
1.上記よりダウンロード
2.信用できる場合はZoneID をはずす(.NET Framework 版で ZoneID付DLLが読み込まれないため)
3.解凍
4.実行するだけ (引数がない場合 usage が表示される)


オプション指定

必須なのは、「LocalPort」と「RemotePort」

  • 0より大きい場合(<65536)、ネットワーク(TCPとかUDPとか)
  • 0 の場合、コンソール(標準入出力)
  • -1 の場合、外部プログラム
  • -2 の場合、名前付きパイプ(現状 StreamRelay.NET.exe のみ)
  • -4 の場合、シリアルポート(現状 StreamRelay.NET.exe のみ)

オプション指定(Request と Response)

オプションとして「Request」とか「Response」とかは、

  • Request」 : 「ローカル」と呼称するストリームから「リモート」と呼称するストリームへの流れ
  • Response」 : 「リモート」と呼称するストリームから「ローカル」と呼称するストリームへの流れ
    をそれぞれ意味している

設定ファイルからオプションを読み込む

通常、オプションはコマンドライン引数からになるが、そのエスケープ処理が面倒というのもあって、設定ファイルから読み出すことも可能
一つのオプションを一行に書けばよい。

Java版
java.exe -Djava.security.policy=StreamRelay.policy -jar StreamRelay.jar -ConfigFile "FileName"
または
StreamRelay.bat -ConfigFile "FileName"

設定ファイルの記述方法は「Sample\sample_conf.txt」を参照のこと

.NET Framework版
StreamRelay.NET.exe -ConfigFile "FileName"

設定ファイルの記述方法は「Sample\config.txt」を参照のこと


レジストリからオプションを読み込む

.NET Framework 版は、レジストリからオプションを読み込む事も可能

StreamRelay.NET.exe -Registry "SubKeyName"

既定のレジストリキーは「HTLM\SOFTWARE\UrlRewriteProxy<SubKey>」

レジストリキーへの設定方法は、「sample\config.reg」を参照のこと


ストリームの奪い合い(コンソールについて)

「ローカル」も「リモート」も入力ソースの実体としてコンソール(キーボードから入力(標準入力))となった場合、「ローカル」側の入力源となり、「リモート側」は入力源なしとなる仕様としている
よって、
java.exe -jar StreamRelay.jar -localport 0 -remoteport 0 < a.txt
StreamRelay.NET.exe -localport 0 -remoteport 0 < a.txt
の場合、
「ローカル」のストリーム(コンソール(標準入力))からa.txtが読まれて、「リモート」のストリーム(コンソール(標準出力))へ書き込まれる。

という事になる


StreamRelay.jar


StreamRelay.NET.exe


StreamRelay.NET.exeのプラグイン作成方法


リンク


2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?