0

TCP ソケットを介して Java サーバーに接続するアプリを開発しています。何らかの理由で、クライアント/アプリが //HERE でスタックし続けます。

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

import android.util.Log;

class ClientConnectToServer
{Socket clientSocket;

      public ClientConnectToServer()
     { try {
        clientSocket = new Socket("10.0.2.2", 9000);
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

      public String sendMessage(String message)
      {
try{        clientSocket = new Socket("10.0.2.2", 9000);

          String modifiedSentence;
          DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
          BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
          outToServer.writeBytes(message + '\n');
          modifiedSentence = inFromServer.readLine();
          outToServer.close();
          inFromServer.close();
              //HERE
          clientSocket.close();
          Log.v(modifiedSentence, modifiedSentence);
          return modifiedSentence;}
catch(Exception e)
{
    return "";}

      }
}

助けてくれてありがとう。

4

1 に答える 1

1

ありえない。その時点で、ソケットは以前の両方のクローズにより既にクローズされているため、そのコード行で行うことは何もありません。何らかの理由でログ行でブロックされている可能性があります。

ソケットを閉じるときは、その出力ストリームをラップした出力ストリームまたはライターを閉じる必要があります。これにより、それがフラッシュされ、入力ストリームとソケットが閉じられます。それ以外は閉じないでください。

于 2012-07-15T00:06:50.173 に答える