2016-04-27 12 views
0

私は2つの部分で構成されるアプリをコーディングしています。デスクトップとアンドロイド。 1台のデスクトップといくつかのアンドロイドデバイスがあります。 (カウントを知らない)TCPとデスクトップの間でAndroidデバイスを通信したい。しかし、アンドロイドデバイスは、デスクトップのIPアドレスを知っていません。ネットワーク上の特定のデスクトップのIPアドレスを見つける方法は?

私は2つの方法をthouht:

1-デスクトップアプリは、起動時にローカルIPアドレスを変更します。だからアンドロイドのデバイスは、IPアドレスを知っている。 (私はそのIPアドレスでコード化しました)

2デスクトップアプリケーションは、送信されたデスクトップのIPアドレスにIPアドレス(192.168.0.1 - 192.168.0.255)を常に接続しようとします。アンドロイドデバイスがネットワークに接続すると、接続が受け入れられ、デスクトップのIPがわかります。

しかし、両方の点でいくつかの問題があります。

まず、lan ipを変更するには、管理者である必要があります。したがって、javaでadminとしてコマンドを実行することは問題です。私がこれを行うと、ユーザーがプログラムを起動すると、uacは常にそれを要求します。

私は、アプリケーションが常に接続しようとするため、パフォーマンスの問題があると思います。アンドロイドデバイスが接続され、dhcpが192.168.0.5を与えるが、ループは192.168.0.150にあるとき、これを実行する。だからアンドロイドデバイスは接続を待つ必要があります。

これよりも良い方法はありますか?

答えて

0

ホスト名を使用できます。ネットワークが適切に設定されていれば、ホスト名は正しい場合でも正しいIPを指します。

+0

誤っている場合は正しく入力してください。デスクトップアプリはexのホスト名を設定します。 "blabla"とすべてのアンドロイドデバイスは "blabla:port"に接続しようとします。右? –

1

この投稿を見るNetwork discovery in Java using multicasting これはこれを行う最良の方法だと思います。

  1. サーバーは、クライアントが
  2. サーバーが要求を受信し、サーバのIPバック返答サーバーのIPを求めるブロードキャスト要求を送信するクライアント
  3. からブロードキャストメッセージをリッスンします。
+0

ですが、分離がイネーブルの場合、デバイスはudpを使用して互いに到達することはできません。私はtcpで放送しようとしましたが、それはとても遅いです。 –

関連する問題