美文网首页
tcp连接能直接实现读写流,外加读写大小约束

tcp连接能直接实现读写流,外加读写大小约束

作者: 哆啦在这A梦在哪 | 来源:发表于2020-12-11 09:46 被阅读0次

一般来说,tcp连接之后,连接对象有自己的read和write方法,并没有约束每次读取的大小。这里使用了重新定义read和write的方式,给他加一个读取和写入的大小约束。使用了接口实现的逻辑

type conn struct {
    c    net.Conn
    rw   *ReadWriter
    data []interface{}
}

//ReadWriter 一个包含读写流的结构
type ReadWriter struct {
    *bufio.ReadWriter
    readError  error
    writeError error
}

//Serve tcp连接后执行的逻辑,一般这里是处理tcp长连接的大体流程,主要看NewReadWriter函数
func Serve(listener net.Listener) (err error) {
    for {
        var netconn net.Conn
        netconn, err = listener.Accept()
        if err != nil {
            return
        }
        con := conn{
            c:    netconn,
            rw:   NewReadWriter(netconn, 4*1024),
            data: []interface{}{}, //some data
        }
        go handleConn(con)
    }
}

//handleConn 每个连接处理的逻辑
func handleConn(con conn) {
    //some logic
}

//NewReadWriter 新建一个读写流
//因为tcp的连接net.Conn,已经实现了read和write,所以io.ReadWriter可以直接接受实现,
//同理bufio.NewReadWriter方法反馈的*bufio.ReadWriter同理
//这里使用了NewReaderSize和NewWriterSize,因为有size大小
func NewReadWriter(rw io.ReadWriter, bufSize int) *ReadWriter {
    return &ReadWriter{
        ReadWriter: bufio.NewReadWriter(bufio.NewReaderSize(rw, bufSize), bufio.NewWriterSize(rw, bufSize)),
    }
}

相关文章

  • tcp连接能直接实现读写流,外加读写大小约束

    一般来说,tcp连接之后,连接对象有自己的read和write方法,并没有约束每次读取的大小。这里使用了重新定义r...

  • TCP长连接和短连接

    TCP在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接...

  • TCP通信的整个过程

    不断是长连接,断开再连是短连接 tcp长连接和短连接 TCP在真正的读写操作之前,server与client之间必...

  • 基于NIO的网络框架实现

    android中TCP建立连接和通信的方式 接下来主要介绍下Android中TCP建立连接,数据读写的基本方法。先...

  • 7.TCP长连接和短连接

    TCP在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连...

  • tcp长连接和短连接

    TCP在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连...

  • tcp长短连接、epoll建立服务器

    1、tcp长短连接: 短连接:短连接一般只会在 client/server 间传递一次读写操作 建立连接——数据传...

  • TCP长连接与段链接

    TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读...

  • TCP Keep-Alive 和 应用层探活

    TCP Keep-Alive 选项 很多刚接触 TCP 编程的人会惊讶地发现,在没有数据读写的“静默”的连接上,是...

  • 百度校招一面

    1:自我介绍 2:网络库中IO健壮读写的意义,为什么,怎么实现的 3:TCP连接的过程,需要注意哪些部分 4:ti...

网友评论

      本文标题:tcp连接能直接实现读写流,外加读写大小约束

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