socatを使用したUDP-シリアルブリッジの作成

socatを使用したUDP-シリアルブリッジの作成

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

いくつかのコメントと質問。

  1. どういう意味ですかopen:/dev/ttyUSB0,raw,nonblock,waitlock=/tmp/s0.locak,echo=0,b115200,crnl?その説明はどこにありますか?私はと/dev/ttyUSB0を得ましたb115200が、残ったものは何ですか?
  2. 組み込みシステム(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受信ポート54321
  • open:/dev/ttyUSB0- USB #0デバイスへの入力/出力転送設定
  • raw- 生モード、未処理の入力/出力転送
  • nonblock- 非ブロックモードでファイルを開く/使用する
  • waitlock=/tmp/s0.locak- スタンバイロックファイルの作成 -socat複数の保護
  • echo=0- サーバー上のローカルエコーを無効にします。
  • b115200- ボーレートを115,200ビットに設定
  • crnl- 改行文字を\n次から変換します。\r\n

ところで、マニュアルページを見ると、socat多くの例があります。上記のスイッチの詳細な説明もあります。

引用する

おすすめ記事