【问题标题】:Android How to read response of TCP client on port 502Android 如何在端口 502 上读取 TCP 客户端的响应
【发布时间】:2012-10-16 09:56:58
【问题描述】:

我正在开发一个应用程序来向端口 502 发送请求并希望从同一端口读取响应。

这是我迄今为止尝试过的

public class Autoamtion extends Activity {

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

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
        Log.v("on create", "on create");
        final ToggleButton fanOn = (ToggleButton) findViewById(R.id.toggleButton1);
        fanOn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (fanOn.isChecked()) {
                    Toast.makeText(Autoamtion.this, "Fan is On",
                            Toast.LENGTH_SHORT).show();
                    Log.v("on create", "on create");
                    try {
                        echoSocket = new Socket("192.168.1.19", 502);
                        out = new PrintWriter(echoSocket.getOutputStream(),
                                true);
                        in = new BufferedReader(new InputStreamReader(
                                echoSocket.getInputStream()));
                    } catch (UnknownHostException e) {
                        System.err.println("Don't know about host: taranis.");
                        System.exit(1);
                    } catch (IOException e) {
                        System.err.println("Couldn't get I/O for "
                                + "the connection to:192.168.1.19");
                        System.exit(1);
                    }

                    BufferedReader stdIn = new BufferedReader(
                            new InputStreamReader(System.in));
                    String userInput;

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

                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    try {
                        stdIn.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    try {
                        echoSocket.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                } else
                    Toast.makeText(Autoamtion.this, "Fan is Off",
                            Toast.LENGTH_SHORT).show();
            }
        });
    }
}

我刚刚安装了一个 simulator,它打开了 502 端口。我确认了在运行这个 simulator 后打开的端口。
我刚刚建立了与 502 端口的连接。我没有从那里得到任何回应。

请指导我完成此操作,以便我可以使其正常工作。任何建议和帮助将不胜感激。
谢谢

【问题讨论】:

    标签: android tcpclient simulator


    【解决方案1】:

    您也应该发布 stackTrace,以检查失败的原因。

    至少有一件事在您的信息中不一致,您在文本中引用 port 503 并在您的代码中使用 echoSocket = new Socket("192.168.1.19", 502); 连接到端口 502

    【讨论】:

    • 感谢您的回答,我刚刚更正。我没有收到任何错误,但即使我没有收到该模拟器的任何回复。我是否错过了阅读回复的内容?
    • 您的代码没有从模拟器读取响应。看起来只是来自System.in 并写入模拟器。
    • 哦,好吧,我是套接字编程的新手,你能给我一些参考,我可以从哪里学到这么多东西。
    • 您应该遵循的基本概念是: 1- 在您的布局中添加一个 EditText 和一个按钮。在 EditText 中输入要发送到模拟器的测试,并在按下 Button 时发送。 2- 套接字读取被阻塞,不应在 UI 线程中完成,因为它会阻塞所有内容,直到您从模拟器中收到答案。您需要创建一个新线程并读取其中的套接字。 edumobile.org/android/android-development/socket-programming 中的示例应该对您有所帮助。
    • 谢谢 luis,我会试试这个,如果我卡在任何地方,我会告诉你再次感谢
    猜你喜欢
    • 1970-01-01
    • 2015-05-11
    • 2012-06-30
    • 2012-06-24
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多