美文网首页
socket通信步骤

socket通信步骤

作者: 约定_6976 | 来源:发表于2018-11-28 13:56 被阅读0次

    详情见测试代码socket,可使用框架EasySocket,AndroidAsync

    参考 https://blog.csdn.net/carson_ho/article/details/53366856

    /**

    * 连接服务器

    */

    private void connection() {

    try {

    // 步骤1:连接服务器

            socket =new Socket(HOST, PORT);

            // 步骤2:创建输入流对象InputStream //接收消息的流对象

            mBufferedReader =new BufferedReader(new InputStreamReader(socket.getInputStream()));

            //发送消息的流对象

            mPrintWriter =new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);

        }catch (IOException ex) {

            ShowDialog("连接服务器失败:" + ex.getMessage());

        }

    }

    //使用PrintWriter发送消息

    btn_send.setOnClickListener(new Button.OnClickListener() {

    @Override

        public void onClick(View v) {

          final String msg =ed_msg.getText().toString();

            if (socket.isConnected()) {//如果服务器连接

                if (!socket.isOutputShutdown()) {//如果输出流没有断开

                    new Thread(new Runnable() {//发送消息要在子线程

                        @Override

                        public void run() {

                      mPrintWriter.println(msg);//点击按钮发送消息

                        }

                  }).start();

                    ed_msg.setText("");//清空编辑框

                }

    }

    }

    });

    //启动线程,连接服务器,并用死循环守候,接收服务器发送过来的数据

    mThread =new Thread(new Runnable() {

    @Override

        public void run() {

    connection();// 连接到服务器

            try {

    while (mWorking) {//死循环守护,监控服务器发来的消息

                    if (!socket.isClosed()) {//如果服务器没有关闭

                        if (socket.isConnected()) {//连接正常

                            if (!socket.isInputShutdown()) {//如果输入流没有断开

                                // 步骤3:通过输入流读取器对象 接收服务器发送过来的数据

                                String mLine;

                                if ((mLine =mBufferedReader.readLine()) !=null) {//读取接收的信息

                                    mLine +="\n";

                                    Message message =new Message();

                                    message.obj = mLine;

                                    mHandler.sendMessage(message);//通知UI更新

                                }else {

    }

    }

    }

    }

    }

    }catch (Exception e) {

    e.printStackTrace();

            }

    }

    });

    mThread.start();

    相关文章

      网友评论

          本文标题:socket通信步骤

          本文链接:https://www.haomeiwen.com/subject/ydbaqqtx.html