/// <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); } }
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); } }
/// <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; }
/// <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); }
/// <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; } }
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)); } }
internal TcpPacket GetRawServerList(ESteam2ServerType type, params object[] args) { return(this.GetRawServerList(( byte )type, args)); }