Android 2.2 readUTF()套接字问题

时间:2011-03-22 23:20:31

标签: java android sockets

我正在尝试创建一个Java客户端 - 服务器程序,其中服务器在Windows PC上运行,而客户端在Android 2.2手机上运行。

连接没问题。从手机向PC发送数据也很好。 只是在手机上接收数据会导致程序崩溃。

我正在使用DataInputStream和DataOutputStream来读取/写入Socket。

    //Thread on the Phone
    public void run() {
    while (RUN) {

        if (socket != null && socket.isConnected()) {
            try {
                //Crash
                String text = dis.readUTF();
                myTextView.setText(text);

            } catch (IOException ex) {
                //ErrorHandling
            }

        }

    }
}

我想从服务器接收一个String,然后在TextView中显示它。 有任何想法吗?我已经设置了此权限:

<uses-permission android:name="android.permission.INTERNET" />

我还需要其他权限吗?感谢。

2 个答案:

答案 0 :(得分:0)

我会确保您的数据输入流正确启动:

Socket s = new Socket(serverAddress, port); DataInputStream dis = new DataInputStream(s.getInputStream());

否则,这里是一个链接,例如代码,其中有人使用InputStreamReader()和OutputStreamWriter()为Android制作服务器和客户端。

https://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/

答案 1 :(得分:0)

如果您不在UI线程中,则无法在UI上设置文本。

这样做......

添加:

Runnable showmessage = new Runnable() { public void run() { myTextView.setText(membervariabletext); } };

从你的线程中,在readUTF()之后,调用“runOnUiThread(showmessage);”