Exemple #1
0
        public void SendHostUpdate(GameHost host)
        {
            var d = GameHostEntry.SerializeHost(host);

            if (d != null && udp.Client != null)
            {
                udp.Send(d, d.Length, multicastEndpoint);
            }
        }
Exemple #2
0
        public static GameHostEntry FromBytes(IPEndPoint address, byte[] data, int index)
        {
            var ms = new MemoryStream(data, index, data.Length - index);
            var r  = new BinaryReader(ms);
            var gh = new GameHostEntry();

            gh.Address     = address;
            gh.HostId      = r.ReadInt64();
            gh.PlayerCount = r.ReadInt32();
            gh.MaxPlayers  = r.ReadByte();
            gh.State       = (GameState)r.ReadByte();
            gh.GameTitle   = r.ReadString();
            r.Close();
            ms.Close();
            return(gh);
        }
Exemple #3
0
        void listenerThread()
        {
            while (udp.Client != null)
            {
                IPEndPoint targetAddress = null;
                var        data          = udp.Receive(ref targetAddress);

                switch ((InteractionMessage)data[0])
                {
                case InteractionMessage.PingRequest:
                    SendHostUpdate();
                    break;

                case InteractionMessage.PingAnswer:
                    if (EntryReceived != null)
                    {
                        var gh = GameHostEntry.FromBytes(targetAddress, data, 1);
                        EntryReceived(gh);
                    }
                    break;
                }
            }
        }