static void Connect() { var random = new Random(Environment.TickCount); Port = random.Next(1024, UInt16.MaxValue); _connectionEstablished = new ManualResetEventSlim(false); _listener = new TcpListener(Fix.Network.GetLocalAddress(Host), Port); _listener.Start(); _listener.BeginAcceptSocket(AcceptTcpClientCallback, _listener); _client = new TcpClient { NoDelay = true }; _client.Connect(Fix.Network.GetAddress(Host), Port); Initiator = new Fix.PersistentSession { Stream = _client.GetStream(), LogonBehaviour = Fix.Behaviour.Initiator, PersistMessages = false }; Initiator.Error += Initiator_Error; Initiator.Warning += Initiator_Warning; Initiator.Information += Initiator_Information; _connectionEstablished.Wait(); }
static void AcceptTcpClientCallback(IAsyncResult ar) { var listener = (TcpListener)ar.AsyncState; _socket = listener.EndAcceptSocket(ar); _socket.NoDelay = true; Acceptor = new Fix.PersistentSession { Stream = new Fix.NetworkStream(_socket, true), LogonBehaviour = Fix.Behaviour.Acceptor, PersistMessages = false }; Acceptor.Error += Acceptor_Error; Acceptor.Warning += Acceptor_Warning; Acceptor.Information += Acceptor_Information; _connectionEstablished.Set(); }