2014-10-02 39 views
2
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. 編譯並運行這個程序(go1.3.3的Linux/AMD64 @ ubuntu14.04)
  2. telnet localhost 12345
  3. telnet命令退出immediatery

是tls.LoadX509KeyPair關閉net.Conn?golang:tls.LoadX509KeyPair關閉net.Conn?

+0

'tls.LoadX509KeyPair'與網絡沒有任何關係。它會返回一個證書,您在此不使用它。 – JimB 2014-10-02 14:50:06

回答

2

問題在於你沒有在這裏使用網絡連接來處理任何事情,並且它只是簡單地用垃圾回收清理,因爲循環的下一次迭代重新聲明c

添加以下內容將顯示關於網絡連接的Hello響應,然後關閉它。

c.Write([]byte("HELLO\n")) 
    c.Close() 
+0

謝謝,理解。 – yushi 2014-10-02 20:27:56