bind() {
		if (this.opts.udpDiscovery === false) {
			this.logger.info("UDP Discovery is disabled.");
			return this.Promise.resolve();
		}

		return this.Promise.resolve()
			.then(() => {
				// Start multicast listener
				if (this.opts.udpMulticast) {
					// Bind only one interface
					if (this.opts.udpBindAddress)
						return this.startServer(
							this.opts.udpBindAddress,
							this.opts.udpPort,
							this.opts.udpMulticast,
							this.opts.udpMulticastTTL
						);

					// Binding all interfaces
					const ipList = this.getInterfaceAddresses();
					return this.Promise.all(
						ipList.map(ip =>
							this.startServer(
								ip,
								this.opts.udpPort,
								this.opts.udpMulticast,
								this.opts.udpMulticastTTL
							)
						)
					);
				}
			})
			.then(() => {
				// Start broadcast listener
				if (this.opts.udpBroadcast)
					return this.startServer(this.opts.udpBindAddress, this.opts.udpPort);
			})
			.then(() => {
				// Send first discover message after ~1 sec
				setTimeout(() => this.discover(), randomInt(500) + 500);

				this.startDiscovering();
			});
	}
Bind UDP port

@returns {Promise}
@memberof UdpServer