GO - 包接口说明
[net]    :Conn  :Listener  :TCPConn
服务端
[监听端口 - Listener]
listener,err := net.Listen("tcp", addr) 
[处理端口连接 - Conn]
conn,err := listener.Accept()
SOCKET连接建立
[阻塞Dial - Conn]
// 建立TCP连接
conn, err := net.Dial("tcp", "www.baidu.com:80")
if err != nil {
    // handle error
  return;
}
defer conn.Close()
//read or write on conn
[超时机制Dial - Conn]
conn, _ := net.DialTimeout("tcp", "www.baidu.com:80", 2*time.Second)
// 异常
    :网络不可达或对方服务未启动 
  :服务的listen backlog满
  :网络延迟较大,Dial阻塞并超时
SOCKET 读写
[异常 - conn.Read]
    :Socket中无数据
    :Socket中有部分数据
  :Socket中有足够数据
  :Socket关闭 => "有数据关闭"和"无数据关闭"
  :读取操作超时
[异常 - conn.Write]
    :成功写
  :写阻塞
  :写入部分数据
[Socket属性]
    :SetKeepAlive
  :SetKeepAlivePeriod
  :SetLinger
  :SetNoDelay (默认no delay)
  :SetWriteBuffer
  :SetReadBuffer
连接关闭
[socket - 全双工]
    :对方关闭连接时,己方读取会错误,写操作不会,因为会写到内核socket缓冲区。及,己方的socket是未关闭