4

Erlang で発信 UDP パケットの「ポートに到達できない」エラーを検出する方法を探しているので、トランスポート層のエラーをアプリケーションに積極的に報告できます。つまり、パケットが宛先に到達していないことを上位層に報告するために、ICMP タイプ 3 パケットをキャプチャしたいと考えています。

現在、私は2つのアプローチについて知っています:

  1. 文書化されていない を使用しgen_udp:connect/3ます。ただし、これには、新しい宛先ペア address:port ごとに新しいソケットを開く必要があるようです。利点は、これには特権が必要ないことです。
  2. raw ソケットを開くには、setuid ヘルパーまたは機能のいずれかを必要とするgen_icmpを使用します。

不足している他のバリアントはありますか?

4

1 に答える 1

1

procketはあなたが探しているものかもしれませんが、私自身は使用したことがありません。これは低レベルのソケット API へのバインドであるため、基になる API がサポートするすべてのプロトコルを使用できます。私はその README を引用しているだけなので、少々の塩味で受け取ってください。

于 2015-10-13T08:02:21.220 に答える