golang:tls.LoadX509KeyPair关闭net.Conn吗?

package main

import (
    "crypto/tls"
    "fmt"
    "log"
    "net"
)

func main() {
    ln, err := net.Listen("tcp", ":12345")
    if err != nil {
        log.Fatal(err)
    }

    for {
        c, err := ln.Accept()
        if err != nil {
            log.Fatal(err)
        }
        fmt.Println(c)
        tls.LoadX509KeyPair("cert.pem", "key.pem") // created by http://golang.org/src/pkg/crypto/tls/generate_cert.go
    }
}
  1. compile and run this program(go1.3.3 linux/amd64 @ubuntu14.04)
  2. telnet localhost 12345
  3. telnet command exits immediatery

Is tls.LoadX509KeyPair closes net.Conn?

The problem is that you're not using the network connection for anything here, and it's simply getting cleaned up with garbage collection, since the next iteration through the loop is re-declaring c.

Adding the following will show you a Hello response on the network connection before closing it.

    c.Write([]byte("HELLO
"))
    c.Close()