internal NetworkServerConnection(IEnumerable<string> signatureHashAlgs, IEnumerable<Protocol> protocols, Socket reliableSocket, NetworkConnectionProvider provider) : base(protocols, provider.pkCryptoFactory, null, false) { if (signatureHashAlgs == null) throw new ArgumentNullException ("signatureHashAlgs"); if (reliableSocket == null) throw new ArgumentNullException ("reliableSocket"); if (provider == null) throw new ArgumentNullException ("provider"); this.signatureHashAlgs = signatureHashAlgs; this.provider = provider; RemoteEndPoint = reliableSocket.RemoteEndPoint; this.reliableSocket = reliableSocket; var asyncArgs = new SocketAsyncEventArgs(); asyncArgs.UserToken = this; asyncArgs.SetBuffer (this.rmessageBuffer, 0, 20480); asyncArgs.Completed += ReliableReceiveCompleted; int p = Interlocked.Increment (ref this.pendingAsync); Trace.WriteLineIf (NTrace.TraceVerbose, String.Format ("Increment pending: {0}", p), "new NetworkServerConnection:" + connectionId); this.rreader = new BufferValueReader (this.rmessageBuffer); if (!this.reliableSocket.ReceiveAsync (asyncArgs)) ReliableReceiveCompleted (this, asyncArgs); }
public static ScreenshareServer StartNew() { // NetworkConnectionProvider requires that you tell it what local target to listen // to and the maximum number of connections you'll allow. var provider = new NetworkConnectionProvider(ScreenshareProtocol.Instance, new Target(Target.AnyIP, 58291), 10); var server = new ScreenshareServer(provider); server.Start(); return server; }
public void RejectSha1() { TearDown(); provider = new NetworkConnectionProvider (new [] { MockProtocol.Instance }, (IPEndPoint)EndPoint, MaxConnections, () => new RSACrypto(), new string[] { "SHA256" } ); provider.Start (MessageTypes); var test = new AsyncTest<DisconnectedEventArgs> (d => Assert.AreEqual (ConnectionResult.FailedHandshake, d.Result)); var client = new NetworkClientConnection (new[] { MockProtocol.Instance }, () => new MockSha1OnlyCrypto()); client.ConnectAsync (EndPoint, MessageTypes); client.Connected += test.FailHandler; client.Disconnected += test.PassHandler; test.Assert (10000); }
internal NetworkServerConnection(IEnumerable <string> signatureHashAlgs, IEnumerable <Protocol> protocols, Socket reliableSocket, NetworkConnectionProvider provider) : base(protocols, null, false) { if (signatureHashAlgs == null) { throw new ArgumentNullException("signatureHashAlgs"); } if (reliableSocket == null) { throw new ArgumentNullException("reliableSocket"); } if (provider == null) { throw new ArgumentNullException("provider"); } this.signatureHashAlgs = signatureHashAlgs; this.provider = provider; RemoteTarget = reliableSocket.RemoteEndPoint.ToTarget(); this.reliableSocket = reliableSocket; var asyncArgs = new SocketAsyncEventArgs(); asyncArgs.UserToken = this; asyncArgs.SetBuffer(this.rmessageBuffer, 0, 20480); asyncArgs.Completed += ReliableReceiveCompleted; int p = Interlocked.Increment(ref this.pendingAsync); Trace.WriteLineIf(NTrace.TraceVerbose, String.Format("Increment pending: {0}", p), "new NetworkServerConnection:" + connectionId); this.rreader = new BufferValueReader(this.rmessageBuffer); this.serializer = new ServerMessageSerializer(this, protocols); if (!this.reliableSocket.ReceiveAsync(asyncArgs)) { ReliableReceiveCompleted(this, asyncArgs); } }