为什么我的应用程序在关闭套接字时卡住了?

时间:2012-07-14 22:49:12

标签: android sockets

我正在开发一个通过TCP套接字连接到java服务器的应用程序。出于某种原因,客户端/应用程序一直停留在//这里。

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 "";}

      }
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

不可能。此时套接字由于两个先前的关闭而已经关闭,因此该行代码没有任何作用。由于某种原因,您更有可能在记录行被阻止。

关闭套接字时,应该关闭围绕其输出流的输出流或编写器。刷新它并关闭输入流和套接字。不要关闭其他任何东西。