2016-10-16 8 views
1

ローカルネットワーク経由で2つのアンドロイド電話機間でメッセージを転送しようとしています。私はこれを行う良い方法がどこにソケットを読み込みます。 (私はブルートゥースを使用できません) (どちらもNFCは使用できません)クライアントソケットがサーバーソケットに接続していません

私はサーバーとクライアントアプリケーションを構築しました。

1つのアプリケーションには、接続をリッスンするサーバーがあります。
他のアプリには、ボタンを押したときに接続しようとするクライアントがあります。

マニフェストファイルには両方とも正しい権限が含まれています。名前= "android.permission.INTERNETあなた"/
使用許可>アンドロイド:
が使用許可アンドロイド(htmlタグ付き)/

名= "android.permission.ACCESS_NETWORK_STATEの" 私はオンラインサーバーを置きます最初:

 ServerSocket myServerSocket = new ServerSocket(27024); 
     System.out.println("Server is waiting for incoming connection on host=" + InetAddress.getLocalHost().getCanonicalHostName() + ", port=" + myServerSocket.getLocalPort()); 
     Socket socket = myServerSocket.accept(); 

次に、クライアントと接続してみます。私のコンソールで

  String host = "localhost"; 
      int port = 27024; 

      try{ 
       System.out.println("Client attempting to connect to server at host: " + host + ", port: " + port); 
       Socket socket = new Socket(host, port); 

       //This below line never gets called :(
       System.out.println("Client socked created! Now trying to send data to server"); 

       } 


ホストでサーバーに接続しようとするクライアント:ローカルホスト、ポート:27024

"クライアントが作成した酔っぱらいました!"行は決して出力されません。

両方のホストが「localhost」に設定され、ポート番号が同じです。
さまざまなポートを試しましたが、何も起こりません。

答えて

1
String host = "localhost"; 
int port = 27024; 

クライアントには、サーバーのIPアドレスを割り当てる必要があることは明らかです。

ノートあなたはほとんどの場合、WiFi以外のインターフェースではアプリケーションをバインドすることはできません。

+0

クライアントとサーバーの両方がローカルネットワーク上にある場合は、localhost? – snowy500

+0

'localhost'はアプリケーションが動作しているデバイスを指し、アドレスは常にローカルループバックである' 127.0.0.1'です。このアドレスを使用すると、パケットはデバイスから離れることはありません。各デバイスのIPを別のデバイスで使用する必要があります。 –

+0

私は愚かな気分にさせる神、私は今、人の例が私がYouTubeで見ていた理由を理解する - 彼は1台のマシンからクライアントとサーバーを実行していたので。 – snowy500

関連する問題