android socket通信问题 求解决!!!!!!

我在另一个帖子里有问  但是代码不完整 所以再开一贴 大家帮忙看看那里有问题  该怎么改
http://bbs.csdn.net/topics/391947187?page=1#post-401121731
这是一个手机端控制飞行器的代码  
能连接成功  但是发送数据有很大延迟  通常发送之后要等个几分钟 在服务器端才会接收到  而且是突然就出现一大堆的数据
比如我设置了4个按钮 分别发送1,2,3,4    按下之后 几分钟会在服务器接收到  类似1,1234,22,11,1,之类的并不是按下一次接受一次 而是有的是把好几次按的一起显示出来在一行

放上完整的代码  大家看看应该怎么改
 //连接服务器
        connect_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Thread(){
                    @Override
                    public void run() {
                        try {
                            socket = new Socket();
                            SocketAddress address = new InetSocketAddress("192.168.1.102", 8000);
                            socket.connect(address, 5000);
                            socket.setTcpNoDelay(true);
                            socket.setKeepAlive(true);
                            outputStream = socket.getOutputStream();
                            inputStream = socket.getInputStream();

                        }
                            catch (Exception e) {
                            e.printStackTrace();
                        }
                    };
                }.start();
                Toast.makeText(Mode2Activity.this,"成功",Toast.LENGTH_SHORT).show();
            }
        });


        //向前飞
        forwardbth.setOnTouchListener(
                new View.OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                char command = '1';
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        SendCommand(command);
                        break;
                    case MotionEvent.ACTION_UP:
                        SendCommand(stop);
                        break;
                    default:
                        break;
                }
                return false;
            }
        });

        //向后飞
        backbth.setOnTouchListener(new View.OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                char command = '2';
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        SendCommand(command);
                        break;
                    case MotionEvent.ACTION_UP:
                        SendCommand(stop);
                        break;
                    default:
                        break;
                }
                return false;
            }
        });

        //向左飞
        leftbth.setOnTouchListener(new View.OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                char command = '3';
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        SendCommand(command);
                        break;
                    case MotionEvent.ACTION_UP:
                        SendCommand(stop);
                        break;
                    default:
                        break;
                }
                return false;
            }
        });

        //向右飞
        rightbth.setOnTouchListener(new View.OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                char command = '4';
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        SendCommand(command);
                        break;
                    case MotionEvent.ACTION_UP:
                        SendCommand(stop);
                        break;
                    default:
                        break;
                }
                return false;
            }
        });

    }
    public void SendCommand ( char command){
        // TODO Auto-generated method stub
        try {

            OutputStreamWriter osw = new OutputStreamWriter(outputStream);
            BufferedWriter bw = new BufferedWriter(osw);
            bw.write(command);
            bw.flush();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值