2012-04-02 20 views
0

私は数時間の検索を使用しましたが、私の質問に答えることができませんでした。 PCとAndroidデバイスの間にTCPネットワーク接続を作成するだけです。 AndroidからPCへのデータ(単純なString)は、実際にSocketとServerSocketに問題なく動作します。 しかし、PCからAndroidにデータを送信することはできません。受け取ったものは何もありません。ここでは、コードです:AndroidデバイスでPCからAndroidデバイスへのネットワーク接続

サーバー:PCで

try { 
     ServerSocket serverSocket = new ServerSocket(1234); 

     //tell logcat the server is online 
     Log.d("TCP", "C: Server Online..."); 

     while (true) { 

      Socket client = serverSocket.accept(); 

      BufferedReader in = new BufferedReader(new InputStreamReader( client.getInputStream())); 
      String input = in.readLine(); 
      // Do what ever you want with input String 

      client.close(); 
     } 
    } catch (Exception e) { 
     Log.d("TCP", "C: " + e); 
    } 

クライアント:

try { 

     InetAddress serverAddr; 

     try { 
      serverAddr = InetAddress.getByName(IPAdresse); 

      socket = new java.net.Socket(serverAddr,portAdresse); 
      socket.setSoTimeout(1000); 
     }catch (ConnectException e) { /*e.printStackTrace();*/ } 

     PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); 
     out.println(nachricht); 

     socket.close(); 

    }catch (SocketException e) { 

// e.printStackTrace(); try {socket.close(); } catch(例外e1){}

}catch (IOException e) { 

// e.printStackTrace(); } try {socket.close(); } catch(例外e1){}

}catch (NullPointerException e) { 

// e.printStackTrace(); try {socket.close(); } catch(例外e1){/ e1.printStackTrace(); /}

} 

私はそれが動作しない理由は絶対にないアイデアを持っていません。 AndroidのコードやAndroid搭載端末の設定に問題があると思います。たぶん、誰かが私のために同じ問題とフィッティングソウルティションを既に持っていました。たくさん助けてくれるでしょう。 おかげ

+0

コード全体を投稿してください。 –

+1

例外をチェックしてください、あなたはそれらを記録/印刷していません – oers

答えて

0

変更この行:これまで

PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); 

:お使いのPCクライアント上

PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 

、それが動作するかどうかを確認。

+0

いいえ、どちらも動作しません。 私はエミュレータを試してAndroidセル用のAPKを作成しましたが、どちらも動作しませんでした。おそらく私は間違ったIPを使用してエミュレータのために、私はしていない。 socket.accept()が以下のコマンドをブロックするので、ServerSocketをスレッドに入れる必要がありました。しかし、受信したメッセージをテキストフィールドに印刷したいときは何も起こりません。 Androidシステムの設定に記載されているIPを使用できるのは間違いありませんか?デバイスがエミュレータではなくインストールされ、実行されている場合 ありがとうございました – user1307940

0

私はここで起こってすることができるカップルの事を考えることができます。

  1. Androidが唯一の電話
  2. ファイアウォール上で不足している権限がどこかにあり
  3. を127.0.0.1にソケットをバインドされてあなたがTHIのような問題については、正しいIPアドレス

に接続されていない通信

  • を妨げています■私は多くの印刷ステートメントを入れたり、データをスニッフィングしながらコードをステップしたりします。Wireshark

  • 関連する問題