/// <summary> /// starts periodically advertising the hosted game over local network /// </summary> /// <param name="t_gameName">the label of the hosted game</param> public void StartAdvertiseLAN(string t_gameName) { byte error; NetUtilGameAdvert advert = new NetUtilGameAdvert(); advert.name = t_gameName; advert.playerCount = m_connections.Count; advert.playerLimit = 16; byte[] message = ConstructMessage(NetUtilMessageType.BROADCAST, advert); NetworkTransport.StartBroadcastDiscovery(m_host, m_clientSocket, m_gameId, m_majorVersion, m_minorVersion, message, message.Length, 300, out error); }
/// <summary> /// handles broadcast messages /// </summary> private void HandleBroadcast() { string ip; int port; byte error; byte[] buffer = new byte[1024]; int size; NetworkTransport.GetBroadcastConnectionInfo(m_hostId, out ip, out port, out error); NetworkTransport.GetBroadcastConnectionMessage(m_hostId, buffer, 1024, out size, out error); NetUtilGameAdvert advert = ConstructType <NetUtilGameAdvert>(buffer, 1, size - 1); NetUtilGameInfo gameInfo = new NetUtilGameInfo(); gameInfo.name = advert.name; gameInfo.playerCount = advert.playerCount; gameInfo.playerLimit = advert.playerLimit; gameInfo.ip = ip; gameInfo.port = port; gameInfo.time = Time.time; m_remoteGames[gameInfo.ip + ":" + port] = gameInfo; }