code: func NewConn(raddr string, block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*UDPSession, error) {
  	udpaddr, err := net.ResolveUDPAddr("udp", raddr)
  	if err != nil {
  		return nil, errors.Wrap(err, "net.ResolveUDPAddr")
  	}
  
  	var convid uint32
  	binary.Read(rand.Reader, binary.LittleEndian, &convid)
  	return newUDPSession(convid, dataShards, parityShards, nil, conn, udpaddr, block), nil
  }
docs: // NewConn establishes a session and talks KCP protocol over a packet connection.