1

私の会社では、IPMsgと呼ばれる小さなアプリケーションを使用しています。これは、メッセンジャーのようなツールで、メッセージとファイルを社内の他の仲間に渡します。メッセージをマルチキャストすることもできます。

また、ユーザー名、ホスト名、およびユーザーの IP アドレスも一覧表示します。

どうすればそれができますか?メッセージ ルーティング用のサーバーは存在せず、CMD でnetstatコマンドを使用して確認しても、通信に使用しているプロトコルやポートなどの詳細は表示されません。

VC++ のソース コードも同じサイトで入手できます。私はコードの行を理解していませんでした... (私は C# のやつです)

どうすればそれができるのか、誰か説明してもらえますか?

4

3 に答える 3

3

IPMsgは、おそらくすべてのクライアントがユーザーとホストの詳細を報告するように要求をマルチキャストします。

同様のメカニズムは、Windowsエクスプローラーがネットワーク上の他のマシンを検索しようとするときに使用されます。このタイプのマルチキャスト検出の適切な説明は、ここで説明されています。

于 2009-08-27T11:43:31.810 に答える
3

簡単な方法の 1 つは、アプリケーションが特定のネットワーク ポートでリッスンするようにすることです。そのインスタンスを起動すると、同じネットワーク上の各コンピューターのそのポートに接続しようとします。他のコンピュータでそのポートが開いていて、正しく応答する場合は、アプリケーションの別のインスタンスが見つかりました。

于 2009-08-27T11:40:28.993 に答える
0

IPMsg は、接続ポートである特定のポートで着信接続をリッスンするデーモンです。Wireshark を使用して、どのポートを使用したかを確認できます。

Wireshark を起動し、LAN に接続したインターフェイスでリッスンを開始し、メッセージの送信を開始すると、wireshark はポート番号とともに画面にメッセージを表示します。

アプリケーションはピア ツー ピア ソフトウェアであり、メッセージをルーティングするための中央サーバー ソフトウェアは必要ありません。着信接続を受け入れる小さなデーモンしかありません。これは、Jabber インスタント メッセージング プロトコルも機能する方法です。


あなたが言ったように、ユーザーのユーザー名、ホスト名、IP アドレスが一覧表示されますが、それはネットワークに ping を実行してそれを見つけるということですか? はいの場合、接続しているサブネットを知る必要があるローカル ネットワーク上のコンピューターの IP アドレスを実際に見つけることができます。

正しいサブネット情報を入力すれば、ARP/ICMP Ping を使用してネットワーク上に存在するホストを知ることができます


メッセージのマルチキャストも特別なことではありません。これは、すべての Networking Stack で提供される機能です。

.NET でマルチキャストが必要な場合は許可されます。良い例を提供するコードプロジェクトのこのページを確認してください

于 2009-09-01T07:04:48.297 に答える