博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Golang 如何从socket读出所有数据
阅读量:6118 次
发布时间:2019-06-21

本文共 1586 字,大约阅读时间需要 5 分钟。

第一种:

func read(conn *net.Conn) error {        defer conn.Close()        buf := make([]byte, 0, 4096)        len := 0        for {                n, err := conn.Read(buf[len:])                if n > 0 {                       len += n                }                if err != nil {                        if err != io.EOF {                                //Error Handler                                                                                                                    }                        break                }        }        // buf[:len] is the content                                                                                                        }

 第二种,更给力的一种方法:

func read2(conn *net.Conn) error {        defer conn.Close()        var buf bytes.Buffer        _, err := io.Copy(&buf, conn)	if err != nil {                // Error handler                                                                                                                           return err        }        return nil}

从io.Copy的实现来看,它实际上跟第一种的实现非常像。它先从conn中读出最多32KB的数据,然后调用buf的Write方法将这些数据写入到buf中。 

第三种:

func read3(conn *net.Conn) error {	defer conn.Close()        buf, err = ioutil.ReadAll(conn)        if err != nil {                // Error Handler                                                                                                                           return err        }        // use buf...                                                                                                                              return nil}

要想玩得爽,还是用第一种比较靠谱。知根知底。

 

转载地址:http://lhpka.baihongyu.com/

你可能感兴趣的文章
BGP笔记(一)
查看>>
拷贝构造函数是必须要带引用类型的参数的, 而且这也是编译器强制性要求的...
查看>>
VMware中centos6.5mini设置静态IP
查看>>
Linux文件查找之find详解
查看>>
iptables nat表转发
查看>>
App自动化测试必备之adb使用
查看>>
Apache服务器的基本配置(详细)
查看>>
使用shell批量添加用户
查看>>
记一个OfficeException
查看>>
python 内置模块collections
查看>>
深入JVM锁机制
查看>>
PHP编译安装
查看>>
向ios模拟器里添加图片的简单方法
查看>>
《逆向分析实战》数据的存储及表示形式
查看>>
这本Python入门畅销书《“笨办法”学python 3》,不仅仅是一本书
查看>>
Linux笔记(磁盘格式化mke2fs/mkfs.xfs,磁盘挂载,手动增加swap空间)
查看>>
QSB+的13个要素
查看>>
PMP每日一题
查看>>
php实现单例模式
查看>>
消息队列如何利用标签实现消息过滤
查看>>