public void Connect(string host, ushort port) { try { Disconnect(); Initialize(); _handle = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); SocketExtensions.SetKeepAliveEx(_handle, KEEP_ALIVE_INTERVAL, KEEP_ALIVE_TIME); _handle.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, true); _handle.NoDelay = true; _handle.Connect(host, port); if (_handle.Connected) { _handle.BeginReceive(this._buffer, 0, this._buffer.Length, SocketFlags.None, AsyncReceive, null); OnClientState(true); } } catch (Exception ex) { OnClientFail(ex); Disconnect(); } }
internal Client(Server server, Socket sock, Type[] packets) { try { AddTypesToSerializer(typeof(IPacket), packets); _parentServer = server; Initialize(); _handle = sock; SocketExtensions.SetKeepAliveEx(_handle, KEEP_ALIVE_INTERVAL, KEEP_ALIVE_TIME); _handle.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, true); _handle.NoDelay = true; _handle.BeginReceive(this._buffer, 0, this._buffer.Length, SocketFlags.None, AsyncReceive, null); EndPoint = (IPEndPoint)_handle.RemoteEndPoint; OnClientState(true); } catch { Disconnect(); } }