socket通信步骤

2018-11-28  本文已影响0人  约定_6976

详情见测试代码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();

上一篇 下一篇

猜你喜欢

热点阅读