本帖最后由 AmberCai 于 2014-06-16 10:19:38 编辑

解决方案 »

  1.   

     send.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    try {
                        // 客户端启动ClientThread线程不断读取来自服务器的数据
                new Thread(new ClientThread(handler,  input.getText().toString() )).start();
                        // 清空input文本框
                        input.setText("");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
    ClientThread.class
     public ClientThread(Handler handler, String text) throws IOException {
           this.text =text;
            this.handler = handler;
            br = new BufferedReader(new InputStreamReader(s.getInputStream()));
        }
     
        public void run() {
            try {
                s = new Socket("192.168.1.111", 30002);
                os = s.getOutputStream();
                os.write((text+ "\r\n")
                                .getBytes("utf-8"));
      

  2.   


    您好!我刚刚试了,还是报了“bad request for cursor”的错。
    而且如果按以上修改,我有两个小疑问:一个是,在按下send按钮后才进行socket连接,这样会不会影响整体性能?
    二是,如果我有多个按钮,每个按钮都要发送或者监听不同的事件且均与服务器有关,这样的话是不是得在每个按钮中都开启一个线程呢?有没有更好的解决办法?以上是我个人浅显的思考,不对之处,敬请包容!
      

  3.   

    你的包名叫org.crazyit.net,你跟着360报出来的error叫什么劲,com.qihoo,这是奇虎360产品报出来的,跟你这没关系,就算不运行你的程序都会报的东西你这是代码写错了,os这个变量从头到尾没有赋值过
      

  4.   


    是说怎么不运行也报错呢os = s.getOutputStream(); os.write((input.getText().toString() + "\r\n").getBytes("utf-8"));这些都不算给os赋值吗?
      

  5.   


    是说怎么不运行也报错呢os = s.getOutputStream(); os.write((input.getText().toString() + "\r\n").getBytes("utf-8"));这些都不算给os赋值吗?你有两个os,你赋值的这个os和你用的os都不是同一个os,仔细检查代码
      

  6.   


    是说怎么不运行也报错呢os = s.getOutputStream(); os.write((input.getText().toString() + "\r\n").getBytes("utf-8"));这些都不算给os赋值吗?你有两个os,你赋值的这个os和你用的os都不是同一个os,仔细检查代码那改成一楼说的那样,应该是赋值的os与用的os统一了吧?为啥还不行呢?
      

  7.   


    是说怎么不运行也报错呢os = s.getOutputStream(); os.write((input.getText().toString() + "\r\n").getBytes("utf-8"));这些都不算给os赋值吗?你有两个os,你赋值的这个os和你用的os都不是同一个os,仔细检查代码那改成一楼说的那样,应该是赋值的os与用的os统一了吧?为啥还不行呢?懒得看代码,什么叫“应该统一了”,这种简单的赋值问题你都搞不定么
      

  8.   

    我用的是xamarin进行通信  文章地址