Android简单Socket请求

简单做了个Socket请求的例子,在这里记录一下

Android端代码

new Thread(){
            @Override
            public void run() {
                super.run();
                try {
                    //1.创建监听指定服务器地址以及指定服务器监听的端口号
                    Socket socket = new Socket("192.168.1.103", 9080);//192.168.1.101为我这个本机的IP地址,端口号为9080.
                    //2.拿到客户端的socket对象的输出流发送给服务器数据
                    OutputStream os = socket.getOutputStream();
                    //写入要发送给服务器的数据
                    String s1 = new String("这里是你要发送到服务端的数据".getBytes(),"UTF-8");
                    os.write(s1.getBytes());
                    os.flush();
                    socket.shutdownOutput();
                    //拿到socket的输入流,这里存储的是服务器返回的数据
                    InputStream is = socket.getInputStream();
                    //解析服务器返回的数据
                    int lenght = 0;
                    byte[] buff = new byte[1024];
                    final StringBuffer sb = new StringBuffer();
                    while((lenght = is.read(buff)) != -1){
                        sb.append(new String(buff,0,lenght,"UTF-8"));
                    }
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            //这里更新UI
                        }
                    });
                    //3、关闭IO资源(注:实际开发中需要放到finally中)
                    is.close();
                    os.close();
                    socket.close();
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();

服务端代码(这里做了个简单的循环接收,方便测试不同数据)

ServerSocket serverSocket = new ServerSocket(9080);
        System.out.println("服务器开始监听");
        while (true) {
            Socket socket = serverSocket.accept(); //开始监听9080端口
            InputStream inputStream = socket.getInputStream();
            int lenght = 0;
            byte[] buff = new byte[1024];
            StringBuffer sb = new StringBuffer();
            while((lenght = inputStream.read(buff)) != -1){
                sb.append(new String(buff,0,lenght,"UTF-8"));
            }
            System.out.println("这里是服务端接收到的数据:" + sb.toString());
            socket.shutdownInput();
            OutputStream os = socket.getOutputStream();
            String string = new String("这里是服务端返回到客户端的数据".getBytes(),"UTF-8");
            os.write(string.getBytes());
            os.flush();
            // 关闭输出流
            socket.shutdownOutput();
            os.close();

            // 关闭IO资源
            inputStream.close();
        }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 说明 本文 翻译自 realpython 网站上的文章教程 Socket Programming in Pytho...
    keelii阅读 2,189评论 0 16
  • 一、简历准备 1、个人技能 (1)自定义控件、UI设计、常用动画特效 自定义控件 ①为什么要自定义控件? Andr...
    lucas777阅读 5,266评论 2 54
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 奥,生命的形式转换地太快,有点晕。奥,这转换的形式太过激烈,我有点晕。我虽知无常是常态,但这山崩地裂、怒海狂潮,太...
    KLYPL2阅读 260评论 0 0
  • iOS10收到通知不再是在[application: didReceiveRemoteNotification:]...
    进击的小杰阅读 361评论 0 0