UDP接続を介してデータを転送するソフトウェアがあります。しかし、私たちのシステムでは、シリアルポートを介してのみデータを転送できます。私はUDPを使用してシリアルとシリアルの間にブリッジを作成しようとしていますsocat
。しかし、私はそれについてあまり慣れていません。いくつかのチュートリアルを試しましたが、役に立ちませんでした。また、マニュアルを読んでみましたが、それも役に立ちませんでした。
私が一つ見つけたここの例、私のニーズに合わせて調整しました。私の組み込みシステムの内容は次のとおりです(固定IPがあります)。
$ socat -v udp4-datagram:172.24.176.207:54321 \
open:/dev/ttyS0,raw,nonblock,waitlock=/tmp/s0.locak,echo=0,b115200,crnl
私のホストの内容は次のとおりです(固定IPもあります)。
$ socat -v udp4-datagram:172.24.176.116:54321 \
open:/dev/ttyUSB0,raw,nonblock,waitlock=/tmp/s0.locak,echo=0,b115200,crnl
私を許してください。しかし、私は概してsocat
文盲ですnetworking
。
いくつかのコメントと質問。
- どういう意味ですか
open:/dev/ttyUSB0,raw,nonblock,waitlock=/tmp/s0.locak,echo=0,b115200,crnl
?その説明はどこにありますか?私はと/dev/ttyUSB0
を得ましたb115200
が、残ったものは何ですか? 組み込みシステム(172.24.176.207)で
netcat
サーバーを実行します。$ nc -ul 172.24.176.207 54321
ホストからUDPパケットを送信しました。
$ echo -n "hello" | nc -4u -w1 172.24.176.207 54321
しかし、何も起こりませんでした。私は何を見逃していますか?
答え1
エコサーバー設定
一度、socat
次のようにUDPエコーサーバーを設定しました。
$ socat UDP4-LISTEN:54321,fork EXEC:cat
エコクライアント
$ echo -n "hello" | nc -4u -w1 192.168.56.101 54321
hello
TCPダンププロンプト
私はこのプログラムをデバッグするときにネットワークを監視するのが好きなので、このプログラムを実行して「エコサーバー」を監視します。
$ tcpdump -i any -vnn port 54321
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
22:33:21.280053 IP (tos 0x0, ttl 64, id 8684, offset 0, flags [none], proto UDP (17), length 33)
192.168.56.1.62439 > 192.168.56.101.54321: UDP, length 5
22:33:21.282140 IP (tos 0x0, ttl 64, id 40761, offset 0, flags [DF], proto UDP (17), length 33)
192.168.56.101.54321 > 192.168.56.1.62439: UDP, length 5
メモ:上記の技術は、socat / ncサーバーとそのクライアント間で発生するすべてをデバッグするために大幅に変更できます。
socat 引数の理解
構成も見つかりました。socat
疲れた時々。しかし、他のすべてと同様に、小さな部分に分けると、習得する方が簡単です。
$ socat -v udp4-datagram:172.24.176.116:54321 \
open:/dev/ttyUSB0,raw,nonblock,waitlock=/tmp/s0.locak,echo=0,b115200,crnl
したがって、最初の2つのスイッチはやや明確でなければなりません。
-v
- 冗談udp4-datagram:172.24.176.207:54321
- UDP受信ポート54321open:/dev/ttyUSB0
- USB #0デバイスへの入力/出力転送設定raw
- 生モード、未処理の入力/出力転送nonblock
- 非ブロックモードでファイルを開く/使用するwaitlock=/tmp/s0.locak
- スタンバイロックファイルの作成 -socat
複数の保護echo=0
- サーバー上のローカルエコーを無効にします。b115200
- ボーレートを115,200ビットに設定crnl
- 改行文字を\n
次から変換します。\r\n
ところで、マニュアルページを見ると、socat
多くの例があります。上記のスイッチの詳細な説明もあります。