手记

Socket 通信

链接到服务端的线程 在需要链接服务端的时候开启线程
class RequestThread extends Thread {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            super.run();
            try {
                // 1.连接服务器
//                String ip = InetAddress.getLocalHost().getHostAddress();// 服务器Ip地址
                System.out.println("AbsClient*****连接服务器");
                socket = new Socket("192.168.1.110", 8080);// 修改为自己服务器的IP与端口号
                System.out.println("AbsClient*****已经建立连接");
                // 2.发送请求数据 params为要发送的消息
                System.out.println("AbsClient*****发送请求");
                sendRequest(socket.getOutputStream(), "链接服务器");
                socket.isInputShutdown();
                System.out.println("AbsClient*****请求发送成功*****接收响应");
                bufferedInputStream = new BufferedInputStream(socket.getInputStream());
                // 3.接收并解析响应数据  循环监听服务器发送过来的数据
                while (!isInterrupted()) {
                    int size = 0;
                    try {
                        byte[] b = new byte[1024];
                        if (bufferedInputStream == null)
                            return;
                        // 服务器有数据过来的时候就取出数据 没数据的时候就堵塞在这里
                        size = bufferedInputStream.read(b, 0, b.length);
                        if (size > 0) {
                            String mes = new String(b, 0, size); 这是服务端发送过来的数据
                            System.out.println("AbsClient*****响应接收完成*****服务器返回结果");
                        }

                    } catch (Exception e) {
                        // TODO: handle exception
                    }

                }
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }
/******** 生成并发送请求数据 ***************************************************/
    public static void sendRequest(OutputStream out, String params) throws Exception {
        out.write(params.getBytes());
        out.flush();
        System.out.println("AbsClient我发送到服务端去》》》" + params);
    }
 可以用socket.getOutputStream() 获取输出流

原文链接:http://www.apkbus.com/blog-508687-62965.html

0人推荐
随时随地看视频
慕课网APP