android基于tcp写一个客户端与服务端进行通信

主要分为三部分:1.和server端建立连接。2.接收server端传递的数据。3.发送数据给server端。
1.和server端建立连接:
其实很简单,只要用把server端的ip和port传给socke就可以了,注意点是耗时操作要开个子线程来进行

/**
     * 连接线程
     */
    class ConnectServer extends Thread {
        @Override
        public void run() {
            super.run();
            try {
                if (socket == null) {
                    //InetAddress来获取IP地址
                    InetAddress ip = InetAddress.getByName(edt_ip.getText().toString());
                    //获取port
                    Integer port = Integer.valueOf(edt_port.getText().toString());
                    socket = new Socket(ip, port);  //创建连接地址和端口
                    ReceiveThread receiveThread = new ReceiveThread();
                    receiveThread.start();
                }

            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

2.接收server端数据:
同样也是在子线程中实现,我这里都是写了一个内部类来继承Thread

 /**
     * 接收线程
     */
    class ReceiveThread extends Thread {
        @Override
        public void run() {
            super.run();
            while (true) {

                try {
                    final byte[] buffer = new byte[1024]; //创建接收缓冲区
                    inputStream = socket.getInputStream(); //通过socket读取数据
                    final int read = inputStream.read(buffer);//读取数据放到樊城区,并且返回数据长度
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            //将接收到的数据显示到textview,用runOnUiThread来写。
                            String s = new String(buffer, 0, read);
                            tv_receive.setText(s);
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

3.发送数据给server端:
同样,接收和发送都是用字节流(我是按钮点击发送),socket里已经把这些方法封装好了,字节流不熟悉可以百度java io流进行学习。

btn_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    //获取输出流
                    outputStream = socket.getOutputStream();
                    //发送数据给server
                    outputStream.write(edt_send.getText().toString().getBytes());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });

是不是很简单,写完以后打开网络调试助手测试一下
输入server端的ip和port,然后点击连接。
android基于tcp写一个客户端与服务端进行通信_第1张图片
可以看见,连接成功
android基于tcp写一个客户端与服务端进行通信_第2张图片
从server端发送一条数据试试
接收成功
android基于tcp写一个客户端与服务端进行通信_第3张图片
这下试试从客户端发送给server端
android基于tcp写一个客户端与服务端进行通信_第4张图片
也是ok的。
这就是一个简单的android tcp客户端。

你可能感兴趣的:(Android)