Socket InputStream返回上一个命令数据[ANDROID / JAVA]

时间:2015-03-30 15:28:08

标签: java android sockets inputstream outputstream

在我的Android应用程序中,我想用服务器

做一些事情

1.连接 2.获取数据 3.Disconnect

我在使用Socket连接和从服务器获取数据方面取得了成功。

连接服务器的代码: -

try {
        socket = new Socket(dstAddress, dstPort);

        BufferedReader br = new BufferedReader(
                new InputStreamReader(socket.getInputStream()));
        //Read data in the input buffer
        response = br.readLine().toString();

    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        response = "UnknownHostException: " + e.toString();
        throw new CustomException(response);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        response = "IOException: " + e.toString();
        throw new CustomException(response);
    }

我检查了正确的答案: -

220 *************************************************************************

获取数据的代码: -

    try {
        if(socket.isConnected())
        {
            Log.v("TAG","Connected");
        }
        DataOutputStream os = null;
        DataInputStream is = null;
        os = new DataOutputStream(socket.getOutputStream());
        is = new DataInputStream(socket.getInputStream());
        os.writeBytes("EHLO\r\n");
        os.flush();
        String responseLine = "";
        while (is.available() > 0) {
            responseLine = is.readLine();
            System.out.println("Server: " + responseLine);
            status = true;
            if (responseLine.contains("\r\n")) {
                Log.v("TAG",""+ responseLine);
                break;
            }
        }

在while循环中,每次检查响应都给出了正确的值: -

250-indition.cc [::ffff:117.195.116.165]
250-AUTH LOGIN PLAIN CRAM-MD5 CRAM-SHA1 CRAM-SHA256 CRAM-RIPEMD DIGEST-MD5
250-AUTH=LOGIN PLAIN CRAM-MD5 CRAM-SHA1 CRAM-SHA256 CRAM-RIPEMD DIGEST-MD5
250-PIPELINING
250-8BITMIME
250-SIZE 40960000
250-ETRN
250-XXXXXXXA
250 XXXB

但是在我断开服务器之后这样做了,然后它在获取数据时给出了响应。 断开连接的代码: -

try {
        if(socket.isConnected())
        {
            Log.v("TAG","Connected");
        }
        DataOutputStream os = null;
        DataInputStream is = null;
        os = new DataOutputStream(socket.getOutputStream());
        os.writeBytes("quit\r\n");
        os.flush();
        is = new DataInputStream(socket.getInputStream());
        String responseLine = "";
        while (is.available() > 0) {
            responseLine = is.readLine();
            System.out.println("Server: " + responseLine);
        }

而不是获得与服务器断开连接的响应,如下所示: -

221 indition.cc closing connection

连接被外国主机关闭。

它提供了获取数据的响应。我没有关闭任何InputStream和OutputStream。

请为此提供解决方案。 提前谢谢。

0 个答案:

没有答案