示例#1
0
 /// <summary>
 /// Performs a handshake with the server.
 /// </summary>
 /// <param name="type">The expected server type the client is handshaking with.</param>
 /// <returns>True if the handshake succeeded; otherwise false.</returns>
 protected bool HandshakeServer(ESteam2ServerType type)
 {
     try
     {
         Socket.Writer.Write(NetHelpers.EndianSwap(( uint )type));
         return(Socket.Reader.ReadByte() == 1);
     }
     catch
     {
         return(false);
     }
 }
示例#2
0
        private static void BuildServer(IPEndPoint gdServer, ServerList list, ESteam2ServerType type)
        {
            try
            {
                GeneralDSClient gdsClient = new GeneralDSClient();
                gdsClient.Connect(gdServer);

                IPEndPoint[] servers = gdsClient.GetServerList(type);
                list.AddRange(servers);

                gdsClient.Disconnect();
            }
            catch (Exception)
            {
                Console.WriteLine("Warning: Unable to connect to GDS {0} to get list of {1} servers.", gdServer, type);
            }
        }
示例#3
0
        /// <summary>
        /// Gets the server list for a specific server type.
        /// </summary>
        /// <param name="type">The server type.</param>
        /// <returns>A list of servers on success; otherwise, <c>null</c>.</returns>
        public IPEndPoint[] GetServerList( ESteam2ServerType type )
        {
            TcpPacket packet = this.GetRawServerList( ( byte )type );

            if ( packet == null )
                return null;

            DataStream ds = new DataStream( packet.GetPayload(), true );

            ushort numAddrs = ds.ReadUInt16();

            IPEndPoint[] serverList = new IPEndPoint[ numAddrs ];
            for ( int x = 0 ; x < numAddrs ; ++x )
            {
                IPAddrPort ipAddr = IPAddrPort.Deserialize( ds.ReadBytes( 6 ) );

                serverList[ x ] = ipAddr;
            }

            return serverList;

        }
示例#4
0
        /// <summary>
        /// Gets the server list for a specific server type.
        /// </summary>
        /// <param name="type">The server type.</param>
        /// <returns>A list of servers on success; otherwise, <c>null</c>.</returns>
        public IPEndPoint[] GetServerList(ESteam2ServerType type)
        {
            TcpPacket packet = this.GetRawServerList(( byte )type);

            if (packet == null)
            {
                return(null);
            }

            DataStream ds = new DataStream(packet.GetPayload(), true);

            ushort numAddrs = ds.ReadUInt16();

            IPEndPoint[] serverList = new IPEndPoint[numAddrs];
            for (int x = 0; x < numAddrs; ++x)
            {
                IPAddrPort ipAddr = IPAddrPort.Deserialize(ds.ReadBytes(6));

                serverList[x] = ipAddr;
            }

            return(serverList);
        }
示例#5
0
 /// <summary>
 /// Performs a handshake with the server.
 /// </summary>
 /// <param name="type">The expected server type the client is handshaking with.</param>
 /// <returns>True if the handshake succeeded; otherwise false.</returns>
 protected bool HandshakeServer( ESteam2ServerType type )
 {
     try
     {
         Socket.Writer.Write( NetHelpers.EndianSwap( ( uint )type ) );
         return Socket.Reader.ReadByte() == 1;
     }
     catch
     {
         return false;
     }
 }
示例#6
0
 internal TcpPacket GetRawServerList( ESteam2ServerType type, params object[] args )
 {
     return this.GetRawServerList( ( byte )type, args );
 }
        private static void BuildServer(IPEndPoint gdServer, HashSet<IPEndPoint> list, ESteam2ServerType type)
        {
            try
            {
                GeneralDSClient gdsClient = new GeneralDSClient();
                gdsClient.Connect(gdServer);

                IPEndPoint[] servers = gdsClient.GetServerList(type);
                IPEndPoint item;
                for (int i = 0; i < servers.Length; i++)
                {
                    item = servers[i];
                    if (!list.Contains(item))
                    {
                        list.Add(item);
                    }
                }
                gdsClient.Disconnect();
            }
            catch (Exception ex)
            {
                typeof(CDRManager).Error(ex, string.Format("Warning: Unable to connect to GDS {0} to get list of {1} servers.", gdServer, type));
            }
        }
示例#8
0
 internal TcpPacket GetRawServerList(ESteam2ServerType type, params object[] args)
 {
     return(this.GetRawServerList(( byte )type, args));
 }