如何在go中创建TLS池

时间:2016-12-14 10:59:05

标签: go tcp connection-pooling pool tls1.2

我目前在使用Golang 1.7.1时遇到问题 我的目的是从lib“crypto / tls”

创建一个带有TLS连接的池

我的目的是通过TLS将stdin条目转发到网络。我正在用reader := bufio.NewReader(os.Stdin)读取标准输入并循环播放它。在循环之前我尝试创建池。

我关注了来自https://github.com/fatih/pool

的TCP池示例

我的代码示例:

factory    := func() (tls.Conn, error) {
    log.Println("**************  factory start :) :() **************")
    conn, err :=    tls.Dial("tcp", "discover.logs.ovh.com:12202" , &tls.Config{
    InsecureSkipVerify: true,   })
    if err != nil {
        panic(err)
    }
    log.Println("**************  factory stop :) **************")
    return *conn, err
}
p, err := NewChannelPool(3, 10, factory)
if err != nil {
    panic(err)
}

reader := bufio.NewReader(os.Stdin)
log.Println("NewReader done")
for {
    line, overflow, err := reader.ReadLine()
    if err == io.EOF {
        /*err = p.Close()
        if err != nil {
            log.Fatal(err)
        }*/
        os.Exit(0)
    }
    ......
    ......
    ......
    conn, err := p.Get()
    if err != nil {
        log.Fatal(err)
    }
    bytes, err := conn.Write(databytes)
    if err != nil {
        log.Fatal(err)
    }
    conn.Close()

}

tls / tcp lib(除了安全部分)之间的主要区别是Dial return *tls.Conn 和tcp tcp.Conn

所以我认为通过返回* conn我做得很好,我返回指针指向的对象。

当我开始第二次连接时,我总是被这个错误打开:

  

journald-gateway_1 | 2016/12/13 16:19:20 socat [15] E写(6,0x55fc5a73db80,1006):管道坏了

任何想法?

感谢您阅读我。

0 个答案:

没有答案