code: func ListenWithOptions(laddr string, block BlockCrypt, dataShards, parityShards int) (*Listener, error) {
  	udpaddr, err := net.ResolveUDPAddr("udp", laddr)
  	if err != nil {
  		return nil, errors.Wrap(err, "net.ResolveUDPAddr")
  	}
  	conn, err := net.ListenUDP("udp", udpaddr)
  	if err != nil {
  		return nil, errors.Wrap(err, "net.ListenUDP")
  	}
  
  	return ServeConn(block, dataShards, parityShards, conn)
  }
docs: // ListenWithOptions listens for incoming KCP packets addressed to the local address laddr on the network "udp" with packet encryption,
  // dataShards, parityShards defines Reed-Solomon Erasure Coding parameters