Java Android 2.2 readUTF()套接字问题

Java Android 2.2 readUTF()套接字问题,java,android,sockets,Java,Android,Sockets,我正在尝试创建一个Java客户端-服务器程序,其中服务器运行在Windows PC上,客户端运行在Android 2.2手机上 连接正常。从手机向PC发送数据也可以正常工作。 仅仅在手机上接收数据就会使程序崩溃 我使用DataInputStream和DataOutputStream通过套接字进行读/写 //Thread on the Phone public void run() { while (RUN) { if (socket != null &a

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

连接正常。从手机向PC发送数据也可以正常工作。 仅仅在手机上接收数据就会使程序崩溃

我使用DataInputStream和DataOutputStream通过套接字进行读/写

    //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
            }

        }

    }
}
我想从服务器接收一个字符串,然后在文本视图中显示它。 有什么想法吗?我已设置此权限:


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

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

Socket s=新的SocketserverAddress,端口; DataInputStream dis=新DataInputStreams.getInputStream

否则,这里有一个链接,例如有人使用InputStreamReader和OutputStreamWriter为Android创建服务器和客户端的代码


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

做这个

加:

Runnable showmessage=新的Runnable{ 公开募捐{ myTextView.setTextmembervariabletext; } };


在readUTF之后,从线程调用runOnUiThreadshowmessage

谢谢。数据输入流已正确启动。我还尝试了StreamReader->相同的错误。只有当我从PC向手机发送内容时,才会出现此错误。也许这和字符串编码有关?非常感谢您的帮助。我还发现了一个使用readUTF和writeUTF的示例:数据输入流使用修改后的UTF-8,因此我想确保您的PC服务器正在发送该格式:我现在只尝试发送一个整数,它工作正常,至少在接收部分。当我试图设置TextView时,似乎发生了错误:int s=dis.read;song.setTextInteger.toString;嗯,我快疯了。似乎我不能在我的线程运行循环中使用:TextView.setTextabcd。我从活动类中获取Textview对象作为参数,并将其存储在Membervariable中。我还包括了一个线程。睡眠在我的循环中没有效果。非常感谢。我为此挣扎了很长一段时间。这是最好的方法吗?为什么不能从另一个线程更改UI?我是Android编程新手,所以也许你有一些关于这个特殊主题的信息?是的,这是一个需要记住的规则。这与使用C和Visual Basic进行Windows编程的规则相同。Google给出了一个使用处理程序的示例: