Esempio n. 1
0
 /// <summary>
 /// Open the adequate stream to the server.
 /// </summary>
 /// <param name="client">TCP client to use to open the stream</param>
 /// <param name="settings">Settings to use when manipulating the stream</param>
 public CStreamServerIO(TcpClient client, CStreamServerSettings settings) : base(client, settings.LengthBufferSize)
 {
     Port     = settings.Port;
     Settings = settings;
     if (settings.UseSsl)
     {
         // SSL stream
         sslStream = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
         int tmo = client.ReceiveTimeout * 1000;
         client.ReceiveTimeout = 5000;
         try
         {
             // authenticate the server but don't require the client to authenticate.
             sslStream.AuthenticateAsServer(settings.ServerCertificate);
         }
         catch (Exception ex)
         {
             CLog.AddException($"{MethodBase.GetCurrentMethod().Module.Name}.{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}", ex);
             sslStream = null;
             throw;
         }
         finally
         {
             client.ReceiveTimeout = tmo;
         }
     }
     else
     {
         // standard Stream
         networkStream = client.GetStream();
     }
 }
 public Client(Thread mainThread, CThread thread, TcpClient client, CStreamServerSettings settings)
 {
     Tcp        = client;
     Settings   = settings;
     StreamIO   = new CStreamServerIO(client, Settings);
     MainThread = mainThread;
     Thread     = thread;
 }
 public static StartServerType Prepare(CStreamServerSettings settings, CThreadData threadData, CStreamDelegates.ServerOnRequestDelegate onRequest, CStreamDelegates.ServerOnStartDelegate onStart = null, CStreamDelegates.ServerOnConnectDelegate onConnect = null, CStreamDelegates.ServerOnStopDelegate onStop = null, object parameters = null)
 {
     return(new StartServerType()
     {
         ThreadData = threadData,
         Settings = settings,
         OnStart = onStart,
         OnConnect = onConnect,
         OnRequest = onRequest,
         OnStop = onStop,
         Parameters = parameters,
     });
 }