初学android,通过socket向目标端口发送数据。接收端是网上下的tcpclientserver这个软件。代码参考的http://blog.csdn.net/x605940745/article/details/17001641  方法1。可惜服务端软件显示连接正常,就是收不到测试数据。于是想通过调试模式看看发生了什么。我把断点打到button事件里或者放到thread里,run()方法里,无论F7还是F8都是直接就过去了。怎么进入线程里调试。
定义线程
 class MyThread extends Thread {        public String txt1;        public MyThread(String str) {
            txt1 = str;
        }        @Override
        public void run() {
            //定义消息
            Message msg = new Message();
            msg.what = 0x11;
            Bundle bundle = new Bundle();
            bundle.clear();
            try {
                //连接服务器 并设置连接超时为5秒
                socket = new Socket();
                socket.connect(new InetSocketAddress("192.168.1.103", 8080), 15000);                Looper.prepare();
                Toast.makeText(LoginActivity.this,"ok",Toast.LENGTH_SHORT).show();
                Looper.loop();                //获取输入输出流
                OutputStream ou = socket.getOutputStream();
                BufferedReader bff = new BufferedReader(new InputStreamReader(
                        socket.getInputStream()));
                //读取发来服务器信息
                String line = null;
                buffer="111";
                while ((line = bff.readLine()) != null) {
                    buffer = line + buffer;
                }                //向服务器发送信息
                ou.write("android 客户端".getBytes("gbk"));
                ou.flush();
                bundle.putString("msg", buffer.toString());
                msg.setData(bundle);
                //发送消息 修改UI线程中的组件
                myHandler.sendMessage(msg);
                //关闭各种输入输出流
                bff.close();
                ou.close();
                socket.close();
            } catch (SocketTimeoutException aa) {
                //连接超时 在UI界面显示消息
                bundle.putString("msg", "服务器连接失败!请检查网络是否打开");
                msg.setData(bundle);
                //发送消息 修改UI线程中的组件
                myHandler.sendMessage(msg);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }按钮
   bt.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                Toast.makeText(LoginActivity.this,"test",Toast.LENGTH_SHORT).show();
               // Thread thread=new Thread();
                geted1 ="test";
                outstr="client:"+geted1+"\n";
               // txt1.append("client:"+geted1+"\n");
                new MyThread(geted1).start();
            }
        });

解决方案 »

  1.   

    子线程里面不能做UI操作,比如Toast。你要通过handle来操作
      

  2.   

    你的断点应当打到RUN里。
      

  3.   

    class MyThread extends Thread {
     
            public String txt1;
     
            public MyThread(String str) {
                txt1 = str;
            }
     
            @Override
            public void run() {
                //定义消息
                Message msg = new Message();
                msg.what = 0x11;
                Bundle bundle = new Bundle();
                bundle.clear();
                try {
                    //连接服务器 并设置连接超时为5秒
                    socket = new Socket();
                    socket.connect(new InetSocketAddress("192.168.1.103", 8080), 15000);
                 Activity.this.runOnUiThread(new Runnable() {
                   @Override
                 public void run() {
                    Toast.makeText(LoginActivity.this,"ok",Toast.LENGTH_SHORT).show();            }
            });                //获取输入输出流
                    OutputStream ou = socket.getOutputStream();
                    BufferedReader bff = new BufferedReader(new InputStreamReader(
                            socket.getInputStream()));
                    //读取发来服务器信息
                    String line = null;
                    buffer="111";
                    while ((line = bff.readLine()) != null) {
                        buffer = line + buffer;
                    }
     
                    //向服务器发送信息
                    ou.write("android 客户端".getBytes("gbk"));
                    ou.flush();
                    bundle.putString("msg", buffer.toString());
                    msg.setData(bundle);
                    //发送消息 修改UI线程中的组件
                    myHandler.sendMessage(msg);
                    //关闭各种输入输出流
                    bff.close();
                    ou.close();
                    socket.close();
                } catch (SocketTimeoutException aa) {
                    //连接超时 在UI界面显示消息
                    bundle.putString("msg", "服务器连接失败!请检查网络是否打开");
                    msg.setData(bundle);
                    //发送消息 修改UI线程中的组件
                    myHandler.sendMessage(msg);
                } catch (IOException e) {
                    e.printStackTrace();
                }