Home
Browse all 647 examples
Download all 647 examples
Download sample chapters
Reviews
Errata
Acknowledgments
Links on .NET
Paradoxal Press

Buy directly from Paradoxal Press at $33.99 (Save 43%)



Category: Programming
Level: Beginner to seasoned
900 pages
ISBN-10 097661322-0
ISBN-13 978-097661322-0
$59.99 USA
$79.99 CANADA


Listing 17-20 extracted from chapter Input/Output and streams


Listing 17-19<     > Listing 17-21


This listing can be compiled with the command line:
csc.exe /out:Client.exe /target:exe Example_17_20_to_rename_Client.cs
Errors: 0 Warnings: 0


Example_17_20_to_rename_Client.cs
using System;
using System.Net.Sockets;
using System.IO;
using System.Net;
using System.Net.Security;
using System.Security.Principal;
using System.Security.Cryptography.X509Certificates;

class ProgClient {
   static readonly string host = "localhost";
   static readonly ushort port = 50000;
   static void Main() {
      TcpClient tcpClient;
      try {
         tcpClient = new TcpClient( host, port );
         Console.WriteLine(
               "Connection established with {0}:{1}", host, port);
         NetworkStream networkStream = tcpClient.GetStream();

         SslStream streamSsl = new SslStream(
            networkStream, false, ValidateCertificateCallback );
         streamSsl.AuthenticateAsClient( "SslSvrCertif" );
         StreamReader streamReader = new StreamReader( streamSsl );
         try {
            string sTmp = streamReader.ReadLine();
            while ( sTmp != null ) {
               Console.WriteLine( "Receiving: {0}", sTmp );
               sTmp = streamReader.ReadLine();
            }
         } finally {
            streamReader.Close();
            streamSsl.Close();
            networkStream.Close();
            Console.WriteLine( "Deconnecting from {0}:{1}", host, port );
         }
      } catch Exception e ) {
         Console.WriteLine( e.Message );
         return;
      }
   }
   static bool ValidateCertificateCallback( object sender, 
                                X509Certificate certificate, 
                                X509Chain chain,                      
                                SslPolicyErrors sslPolicyErrors ) {
      if ( sslPolicyErrors != SslPolicyErrors.None ) {
         Console.WriteLine(
            "Error to validate the SSL certificate!");
         Console.WriteLine( sslPolicyErrors.ToString() );
         return false;
      else return true;
   }
}	
Copyright Patrick Smacchia 2006 2007