在android中接收UDP数据包

时间:2011-10-15 19:52:30

标签: android networking udp chat datagram

我正在为Android开发一个P2P聊天/共享应用程序。以下代码用于接收UDP数据包,但仅接收并显示第一个消息/数据包。 (发送代码没有问题。)不显示后续聊天消息。 while循环似乎在chathistory.setText之后退出(执行新的String ....例如:chathistory.setText(“test”);未执行。任何人都可以指出错误吗?没有异常抛出。

public void receive() throws Exception
        {
        (new Thread(new Runnable() {

        @Override
        public void run() {
            try 
            {
                ds1=new DatagramSocket(7777);
                //chathistory.setText("Holding the port...");

                while(true)
                {

                    DatagramPacket p = new DatagramPacket(buffer, buffer.length);
                    ds1.receive(p);
                    chathistory.setText(new String(p.getData(), 0, p.getLength()));
                    chathistory.setText("test");

                }
            }
                    catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
        }   

        } })).start();
    }

1 个答案:

答案 0 :(得分:0)

其一,Androids UI调用都不是线程安全的,并且由于您的进程主线程专门用于更新UI,因此您不应该从任何其他线程操作Android中的UI元素,而是运行您的活动。

二,你可能会抛出异常,因为logcat无法从另一个线程打印。

三,我很好奇,如果这段代码曾试图逼近你,我问,因为我很好奇,如果.receive在很长一段时间内被阻止,android会怎么做,你可能应该使用超时。