2010-12-18 3 views
0

私はAndroidアプリケーションを開発しており、アプリケーションはサーバーに接続する必要があります。 これはクライアントコードです。 79.123.176.59はサーバーのIPアドレスです。アプリケーションとサーバーは同じネットワークに接続されています。アプリケーションを実行すると、決してソケットが開かれません。したがって、サーバーに接続できません。Androidアプリケーションがサーバーを接続するソケットを開くことができません

アプリケーションからクライアントコードを分離して実行すると、正常に機能します。

何が問題ですか?何か提案はありますか ?

ありがとうございました!

int port=8080; 
    Socket s; 
    String msg=""; 
    String err="error"; 
    try{ 
     Log.d("Client","Socket"); 
     s=new Socket("79.123.176.59",port); 
     Log.d("Client","Socket opened"); 
     OutputStreamWriter osw=new OutputStreamWriter(s.getOutputStream()); 
     PrintWriter pw=new PrintWriter(osw); 
     BufferedReader br1=new BufferedReader(new InputStreamReader(s.getInputStream())); 
     Log.d("Client","Streams"); 
     pw.println(latitude + " " + longitude); 
     Log.d("Client","String send"); 
     pw.flush(); 
     msg=br1.readLine(); 
     return msg; 
    } 
    catch (Exception e) 
    { 
     return err; 
    } 

答えて

0

ストリームはどちらもストリームを閉じていません。あなたが以前に開いたソケットであなたのデバイスがブロックされているので、接続できません。

finally { 

     pw.close(); 
     br1.close(); 
     s.close(); 
} 
+1

はこのヘルプをした試してみてください?だからあなたはこれを答え – PICyourBrain

0

TCP SOCKET on Androidあなたはこのスレッドに従うことができ、コードはそこにも利用可能である、あなたのキャッチした後、これを配置しようとすると(および/キャッチを試みる内部返しますいけません)。

+0

としてマークして、どのようなコードを使うべきだとお勧めしますか? – toxicate20

0

Socketコンストラクタは文字列を受け取っていませんが、コンパイルする方法はわかりません。

この

s=new Socket(new InetAddress.getByName("79.123.176.59"),port) 
+0

チェックしてください。 getByNameが静的メソッドであるため新しいInetAddress.getByName( "79.123.176.59")が間違っています s =新しいソケット(InetAddress.getByName( "79.123.176.59")、port) – once2go

関連する問題