2017-01-30 5 views
1

次のような状況があります。 ポート8090でローカルにホストされたTCP/IPサーバーを稼働させています 私のアンドロイドアプリケーションからコマンドを送信できる必要があります。サーバーはそのコマンドを受け取り、必要な情報を返す必要があります。 サーバーまたはサーバーのログにアクセスできません。Java Android StudioのTCP/IPローカルホストサーバーと通信する必要があります

私が試したこと

ちょうど良いと思えるシンプルなソケット接続。しかし、printWriterを使用してserver myコマンドを送信した後。 BufferedReaderは、reader.readLine()または.read()でスタックされます。私はサーバーが私のコマンドに応答していないと仮定します。作者は正しく書いていません(どのように伝えますか?)、またはこの方法は現在の状況に対しては正しくありません。

URLとHTTPURLConnectionオブジェクトでこれを実行しようとしていましたが、正しく処理しているかどうかはわかりません。

私は私が投稿できるコードを持っていますが、私はその関連性はまだ考えていません。

あなたはどう思いますか?

要求されたコード

     Socket socket = new Socket("10.0.0.16", 8090); 

         //Send message to server 
         OutputStream os = socket.getOutputStream(); 
         OutputStreamWriter osw = new OutputStreamWriter(os); 
         BufferedWriter bw = new BufferedWriter(osw); 

         String number = "message"; 

         String sendMessage = number + "\n"; 
         bw.write(sendMessage); 
         bw.flush(); 
         System.out.println("Message sent to the server : "+sendMessage); 
         Thread.sleep(10000); 
         //Get the return message from the server 
         InputStream is = socket.getInputStream(); 
         InputStreamReader isr = new InputStreamReader(is); 
         BufferedReader br = new BufferedReader(isr); 
         String message = br.readLine(); 
         System.out.println("Message received from the server : " +message); 
+1

サーバーをデバッグできますか?サーバーが何をしているのか/受信しているのかを見て解決策が見つかるように思えます。 –

+0

受信者が回線を読み込もうとすると、送信した後に送信者が回線を送信したか、または送信した後にソケットを閉じてしまったことを確認する必要があります。その後、すべてが大丈夫になります。代わりに何をしていますか? – greenapps

+0

'私は投稿することができるコードを持っているが、私はその関連性がまだあるとは思わない。もちろん、あなたのコードはまだOKではありません。 – greenapps

答えて

1

ローカルホストは、この場合、エミュレータに、コードが実行されているデバイスを指します。

Androidシミュレータを実行しているコンピュータを参照する場合は、代わりにIPアドレス10.0.2.2を使用してください。 hereから詳細を読むことができます。

+0

この回答の情報は問題とは関係ありません。私は誰がそれをupvoted疑問に思う。 – greenapps

+0

確かに、シミュレータでのテストではなく、サーバーをホストしているPCと同じネットワーク上のアンドロイドデバイスでのテストです。 –

関連する問題