2

UDP データグラムの作成に役立つものは、Ruby ライブラリーまたは Ruby gem の中にありますか? 私はソケットを調べましたが、単純にソケットを作成して送信しない方法はないようです。

私の使用例は次のとおりです。単一の UDP データグラムを構築し、それを送信する別のモジュールに渡す必要があります。簡単に言えば、src/dst アドレスとポート、およびペイロードを指定できるようにする必要があるだけです。

最悪の場合、ある種の構造体を構築し、それぞれのビットを手作業で埋めることができると思いますが、それは車輪の再発明と多くの作業のように感じます. ソケット API の基礎となるものには、私が利用できる類似のものがあるはずですよね?

4

1 に答える 1

2

いわゆるソケット API は、本質的に非常に低レベルの C 言語 API です。UDP ソケットを作成すると、接続情報がカーネルに保存されます。「UDPデータグラムを構築する」ことは決してなく、UDPソケットファイル記述子にデータを書き込んでおり、ネットワーク経由で送信される物理データパケットはカーネル内で構築されます。

そうです、宛先アドレスといくつかのデータを含むアプリケーションで渡すことができるデータ構造が必要な場合は、この構造はそれ自体ではどこにも存在しないため、自分で作成する必要があります。

そんなに大変な作業ではありません。2 つ (または 3 つ) のデータ要素のみ。Structより複雑な機能が必要な場合を除き、通常のクラスを構築するだけであれば、単純なものを使用してジョブを実行できます。

編集

私はあなたの質問を誤解したようです。リソースについては、以下の私のコメントを参照してください。たとえば、ここにRacket ライブラリの docsからのコードがいくつかあります。これはおそらく探していたものに近いものです。

 # tack on UDP
 n.l4 = UDP.new
 # randomize source port
 n.l4.src_port = 1024 + rand(65535-1024)
 # take destination port from the commandline
 n.l4.dst_port = ARGV[2].to_i
 # build a random amount of garbage for the payload
 n.l4.payload = Misc.randstring(ARGV[3].to_i)

 # fix 'er  up (checksum, length) prior to sending
 n.l4.fix!(n.l3.src_ip, n.l3.dst_ip)
于 2013-06-06T15:22:10.080 に答える