LAN内のすべてのPCのホストを取得するには?


ロッド  2004-02-03 17:40:52  No: 6934

すいません。
現在LAN内だけで使用できるチャットソフトを作っております。
相手のホストを入力して接続するのですが、
いちいち相手のホストを入力しなければ使えないのでとても面倒です。
そこでLAN内のホストを取得して表示したいのですが、何をしていいのか
手も足も出ません。

もしよろしければ教えていただきたく存じます。


にしの  2004-02-03 23:07:47  No: 6935

UDPであれば、ブロードキャストで送信して、各クライアントの応答時に自分自身のホスト名を返せばよいかと思います。
LAN内のIPから、応答可能なPCを探してIPに対応するホスト名を取得するという手もありますが、時間がかかります。

ブロードキャストのデメリットは、指定されたブロードキャストIPに対応する全てのIPにデータを送信してしまうところです。
ブロードキャストは、クライアントの特定のみ(接続時のみ)に限定し、管理している他のクライアントに対してチャットのメッセージを送るようにしないと、ネットワークトラフィックが増大します。


ロッド  2004-02-05 01:43:31  No: 6936

にしのさん、ありがとうございます。
UDPとか全然わかっていないので、すいませんがもうすこし、ご指導いただけますでしょうか?

私は
ClientSocket1.Host := ホスト;
ClientSocket1.Port := ポート番号; 
ClientSocket1.Open;
で接続しています。

接続されるほうは
ServerSocket1.Port := ポート番号;  
ServerSocket1.Open; 
で待ち受けて、接続されたら
onClientConnectイベントが起こるという風になっています。

接続してきた相手のホストは
host := ClientSocket1.Socket.RemoteHost;
でとっています。

何が言いたかったのかうまくあらわせませんが、もう少し助言をください。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加