code: func DialWithOptions(raddr string, block BlockCrypt, dataShards, parityShards int) (*UDPSession, error) {
  	// network type detection
  	udpaddr, err := net.ResolveUDPAddr("udp", raddr)
  	if err != nil {
  		return nil, errors.Wrap(err, "net.ResolveUDPAddr")
  	}
  	network := "udp4"
  	if udpaddr.IP.To4() == nil {
  		network = "udp"
  	}
  
  	conn, err := net.ListenUDP(network, nil)
  	if err != nil {
  		return nil, errors.Wrap(err, "net.DialUDP")
  	}
  
  	return NewConn(raddr, block, dataShards, parityShards, conn)
  }
docs: // DialWithOptions connects to the remote address "raddr" on the network "udp" with packet encryption