• 网络编程(Socket)


    public class MainActivity extends Activity {

        private Button button;
        private EditText edit_name;
        private TextView tv_info;
        private Socket client;

        Handler handler=new Handler(){
            public void handleMessage(android.os.Message msg) {
                
                //接受传过来的数据
                String name=(String) msg.obj;
                
                tv_info.setText(client.getInetAddress().toString()+" "+name);

        //或者

        //  tv_info.append(name);


            };
        };
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            // 寻找控件
            findView();

            // 接受服务端发送的信息
            acceptInfo();

            // 按钮点击监听事件
            setOnclick();
        }

        private void acceptInfo() {

            // 由于读取服务端的信息是耗时操作,所以必须创建新的线程
            new Thread() {

                public void run() {

                    // 创建socket对象
                    try {
                        client = new Socket("169.254.103.7", 9999);

                        // 循环读取数据
                        BufferedReader br = new BufferedReader(
                                new InputStreamReader(client.getInputStream(),
                                        "gbk"));
                        while(true)
                        {
                            String data = br.readLine();
                            //将读取的数据发送给主线程
                            handler.sendMessage(handler.obtainMessage(1, data));
                        }

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

                };
            }.start();

        }

        private void setOnclick() {

            button.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                    
                    // 获取输入的信息
                    String str = edit_name.getText().toString();
                    
                    /*//设置输入框的数据
                    edit_name.setText("");*/
                    
                    //将数据传给服务器
                    try {
                        PrintWriter pw=new PrintWriter(client.getOutputStream());
                        pw.println(str);
                        pw.flush();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    
                }
            });
        }

        private void findView() {

            button = (Button) findViewById(R.id.button);
            edit_name = (EditText) findViewById(R.id.edit_name);
            tv_info = (TextView) findViewById(R.id.tv_info);
        }

    }

  • 相关阅读:
    [转]使用Java Mission Control进行内存分配分析
    JDE开发端安装问题(JDE初步卸载重装)
    JDE开发端安装笔记
    [转]JDE910--jas.ini参数说明
    [转]十个常见的缓存使用误区及建议
    JDE910笔记2--OMW项目建立及简单使用
    JDE910笔记1--基础介绍及配置
    [转] 编程之美--字符串移位包含的问题
    关于JDBC
    [转]何时使用委托而不使用接口(C# 编程指南)
  • 原文地址:https://www.cnblogs.com/8023-itxinde/p/5129782.html
Copyright © 2020-2023  润新知