java - android上的socket,每隔一个请求就会消失

标签 java android sockets

我正在编写简单的软件,PC是套接字服务器,android连接到它,然后无论我在PC上的键盘上写什么,android都会获取它并简单地记录。

安卓代码: 包 com.example.socket;

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

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {


protected void onCreate(Bundle savedInstanceState) {


        Socket echoSocket = null;
        PrintWriter out = null;
        BufferedReader in = null;

        try {
            echoSocket = new Socket("192.168.2.3", 4444);
            out = new PrintWriter(echoSocket.getOutputStream(), true);
            in = new BufferedReader(new InputStreamReader(
                    echoSocket.getInputStream()));
        } catch (UnknownHostException e) {
            Log.e("j", "Don't know about host: JANIPC.");
            System.exit(1);
        } catch (IOException e) {
            Log.e("j", "Can't connect to Jani-PC");
            System.exit(1);
        }

        try {
        BufferedReader stdIn = new BufferedReader(new InputStreamReader(
                echoSocket.getInputStream()));
        String userInput;


            while ((userInput = stdIn.readLine()) != null) {
                //out.println(userInput);
                Log.e("j", "echo: " + in.readLine());
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



    }


}

这是我的 PC Java 代码:

package jani.study.socketserver;


import java.io.*;
import java.net.*;
/**
 *
 * @author Jani
 */
public class Main {
public static void main(String[] args) throws IOException, InterruptedException {
   ServerSocket serverSocket = null;
    try {
        serverSocket = new ServerSocket(4444);
    } catch (IOException e) {
        System.err.println("Could not listen on port: 4444.");
        System.exit(1);
    }

    Socket clientSocket = null;
    try {
        clientSocket = serverSocket.accept();
    } catch (IOException e) {
        System.err.println("Accept failed.");
        System.exit(1);
    }

    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
    BufferedReader in = new BufferedReader(
            new InputStreamReader(
            System.in));
    String inputLine;

    System.out.println("Connected!");
    /*while ((inputLine = in.readLine()) != null) {
         out.println(inputLine);

    }*/
    Thread.sleep(1000);
    out.println("1");
    Thread.sleep(1000);
    out.println("2");
    Thread.sleep(1000);
    out.println("3");
    Thread.sleep(1000);
    out.println("4");
    Thread.sleep(1000);
    out.println("5");
    Thread.sleep(1000);
    out.println("6");
    out.close();
    in.close();
    clientSocket.close();
    serverSocket.close();
}


}

在 Android 调试器中,我只收到每秒一个请求,我的意思是,我只收到: 回声:2 回声:4 回声:6

我做错了什么?请帮忙

最佳答案

您正在使用两个 BufferedReader,一个 in 和一个 stdIn 都从套接字读取数据。您首先在 while 循环中使用当前行,然后在 Log 语句中使用下一行。

试试这个:

Log.e("j", "echo: " + userInput);

关于java - android上的socket,每隔一个请求就会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16882222/

相关文章:

java - 错误/尝试后继续函数 - catch

java - 为什么 ASM 不调用我的 `` VisitCode``?

java - 如何为proguard编写规则?

android - 新实例失败 : no <init>

android - android studio 在哪里构建我的 .apk 文件?

Java基本并发通信器-不完全接受连接

c++ - 点对点实际上如何在网络/端口方面工作?

Java 类文件 filename$1.class... 等等 问题

php - 当一个表中的数据库中不存在行时,如何插入记录

java - java socket程序中的多线程