0
誰でもどのプロトコルを使ってもネットワーク内の利用可能なIPアドレスを見つけることができますか?ネットワークで使用されていないIPアドレスを見つける方法は?
UDPブロードキャストは一方向です。しかし、この場合、すべてのユーザーにリスナーアプリが必要ですか?
他の方法がありますか?
誰でもどのプロトコルを使ってもネットワーク内の利用可能なIPアドレスを見つけることができますか?ネットワークで使用されていないIPアドレスを見つける方法は?
UDPブロードキャストは一方向です。しかし、この場合、すべてのユーザーにリスナーアプリが必要ですか?
他の方法がありますか?
ブロードキャストネットワークアドレスにICMP pingを送信できます。あなたのインターフェイスIPは192.168.0.0/24ネットワーク内にある場合たとえば、あなたは192.168.0.255にpingを送信します -
[22:45:54 jmac:~]$ ping 192.168.0.255
PING 192.168.0.255 (192.168.0.255): 56 data bytes
64 bytes from 192.168.0.12: icmp_seq=0 ttl=64 time=0.159 ms
64 bytes from 192.168.0.1: icmp_seq=0 ttl=64 time=99.708 ms
64 bytes from 192.168.0.12: icmp_seq=1 ttl=64 time=0.147 ms
をただし、アプリケーションからのICMP pingを送信するために、あなたはrawソケットをオープンする必要があります&ですから、root権限が必要です。ほとんどのOSのpingプログラムはsetuidのルートプログラムなので、どのユーザーでも呼び出すことができます。
ありがとうJaidev、どうやって問題を解決するにはどうすればいいですか? – CoDe
あなたはアンドロイドとしてそれをタグ付けしているので、私はアンドロイドを信じると、実際には - runtime.exec( "su");のようなことをする必要があります。 通常のUNIXでは、プログラムでsetuid(0)を実行する必要があります。プログラムバイナリはrootが所有し、setuidビットが設定されている必要があります。 する必要があります:chown root your_exe; setuid u + s your_exe; 編集:これはあなたが既にルートアクセス権を持っていたことを意味します。あなたがroot権限を持っていない場合は、プログラムで取得することはできません。 – jman
ああ、私はルートアクセスなしでICMPを使うことはできません... – CoDe