解决方案 »

  1.   

    new Thread() {
       public void run() {    //把UDP操作代码都放到这个地方,然后Handler更新UI }
    }.start();
      

  2.   


    public static Button button1;
        public static TextView Telini;
        public static boolean flag;
         
        private static final int MAX_DATA_PACKET_LENGTH = 40;
        private byte[] buffer= new byte[MAX_DATA_PACKET_LENGTH];
        private DatagramPacket dataPacket;
        private DatagramSocket udpSocket;   
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
             
            //开辟控件空间
            button1 = (Button)findViewById(R.id.button1);
            Telini = (TextView)findViewById(R.id.Telini);
            flag = false;
           //////////////////////////////////////////////////////////////////
            new OperateUDPSocket().start();
             
            button1.setOnClickListener(new Button.OnClickListener(){
                public void onClick(View v){
                    flag = true;
                    //获取输入文本框
                    CharSequence str = "Longin|android|6677";
                    byte out[] = str.toString().getBytes();
                    dataPacket.setData(out);
                    dataPacket.setLength(out.length);
                    try{
                        InetAddress broadcastAddr = InetAddress.getByName("221.194.44.22");
                        dataPacket.setAddress(broadcastAddr);
                        udpSocket.send(dataPacket);
                    }catch(IOException e){
                        e.printStackTrace();
                    }               
                }
            });  
             
        }
        ///////////////////////////////////////////////////////////////////
    class OperateUDPSocket extends Thread {
     @Override
    public void run() {
    // TODO Auto-generated method stub
    super.run();
     try{
                udpSocket = new DatagramSocket(6677);           
            } catch(SocketException e){
                e.printStackTrace();
            }
            dataPacket = new DatagramPacket(buffer,MAX_DATA_PACKET_LENGTH);
            String str = "Longin|android|6677"; //这是要传输的数据
            byte out[] = str.getBytes(); //把要传输的内容分解成字节
            dataPacket.setData(out);
            dataPacket.setLength(out.length);
            dataPacket.setPort(6677);
            try {
                InetAddress broadcastAddr = InetAddress.getByName("221.194.44.22");
                dataPacket.setAddress(broadcastAddr);
                udpSocket.send(dataPacket);
            }catch(IOException e){
                e.printStackTrace();
            }
    }
    }
      

  3.   

     button1.setOnClickListener(new Button.OnClickListener(){
                public void onClick(View v){
                    flag = true;
                    //获取输入文本框
                    CharSequence str = "Longin|android|6677";
                    byte out[] = str.toString().getBytes();
                    dataPacket.setData(out);
                    dataPacket.setLength(out.length);
                    try{
                        InetAddress broadcastAddr = InetAddress.getByName("221.194.44.22");
                        dataPacket.setAddress(broadcastAddr);
                        udpSocket.send(dataPacket);
                    }catch(IOException e){
                        e.printStackTrace();
                    }                
                }
            });
    在这里面加 起个新的线程把你的发送那个sendXX的方法写道线程里 清空输入框 同时把法送的信息显示到已发送里  成功后发handler通知页面发送结果 不过你这没有输入框