2011-08-04 11 views
0

これは接続してサーバーにコマンドを送信するクラスです メソッドで別の接続コードを試してみますが、(SocketConnect)メソッドをテストしても動作しないことがわかりました。 私のコード接続コードに問題があります

public class ConnAndSend { 

    static Socket socket = null; 


     static void SendCommand(String cmnd) { 

      DataOutputStream dataOutputStream = null; 

     try { 

      dataOutputStream = new DataOutputStream(socket.getOutputStream()); 
      dataOutputStream.writeUTF(cmnd); 

       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       finally{ 

         if (dataOutputStream != null){ 
         try { 
         dataOutputStream.close(); 
         } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
         }} 

         }; 

     } 
     // method to connect to server 
     static void SocketConnect(String SrvrIP,int SrvrPrt) { 
     //  Socket socket = null; 
      try { 

       socket = new Socket(SrvrIP, SrvrPrt); 

       } catch (IOException e) { e.printStackTrace();} 

      finally{ 

       if (socket != null){ 
       try { 
       socket.close(); 
       } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       } 
       }} 

     } 
+1

問題が何ですか。あなたが得たエラーは何ですか? – Otra

+0

SocketConnectを呼び出すとサーバーへの接続が発生せず、SendCommandを呼び出すとエラーが発生する "アプリケーションが予期せず停止しました – user875264

+1

logcat? – Otra

答えて

0

はあなたのマニフェストファイルが正しい権限を持っていることを確認したことがありますか?

<uses-permission android:name="android.permission.INTERNET" /> 
+0

これまでに使ったことがあります – user875264

1
  • static修飾子を削除します!

    単語あなたのコードで静的


のすべてoccurances削除:これは(なぜ?)あなたはfinallyでソケットをクローズしている

socket = new Socket(SrvrIP, SrvrPrt); 
} catch (IOException e) { e.printStackTrace();} 
    finally{ 
     if (socket != null){ 
      try { 
      socket.close(); 

を間違っても!

+0

私はsendCommandメソッドにsocket.close()を移動する必要がありますか? – user875264

+0

もちろん、送ったあとももちろんいいですか? –

0

ソケットを使用する機会を得る前にソケットを閉じているように見えるか、以前はSocketConnectを呼び出していません。どのようにソケットを作ったのか分かりますか?

socket = new Socket(SrvrIP, SrvrPrt); 
} catch (IOException e) { e.printStackTrace();} 
    finally{ 
     if (socket != null){ 
      try { 
      socket.close(); 

ソケットを作成し、それを使用してSendCommandに接続してから閉じる必要があります。私はあなたが2つの別々のものを保つ必要があるかどうかはよく分かりませんが、あなたの問題だと思っています。ソケットを使って接続するか、単にソケットを作っていないのです。SendCommandは "接続する。

+0

ボタンで1つ1つにする必要があります。最後に "null"を使って接続しています。 – user875264

+0

正直に言って、私はそうではありませんこれは悪い方法で、あなたが初心者であるように思えるだけです(あなたの他の質問を読むことから)、私はあなたがJavaやアンドロイドの研究はもう少しです。タイトルと各メソッドがどのように見えるのかは、 'SocketConnect'がサーバとの接続を行うときに最初に呼び出される必要があり、' SendCommand'は実際にサーバにデータを送信したり、サーバからデータを受け取ったりする場所です。 SrvrIPとSrvrPrtを設定するコンストラクタを作成して、開始することができます。 – Otra

+0

はい私は初心者です。上記のコードを修正する必要があります。可能であれば、あなたに感謝します。 – user875264

関連する問題