Network Programming in .NET

with C# & Visual Basic .NET

Network programming in .NET is a new release from Elsevier Digital Press, and is available now at all good computer bookshops. The book is a complete introduction to developing network programs in both C# and VB.NET. It includes chapters on the fundamentals of network programming, TCP and UDP sockets, multicasting, HTTP and SMTP, Remoting, and Web services. Not only that, but it also covers rare, and hard-to-find practical information on Telephony, Packet capture, MSMQ, and IPv6. Whether you’re a professional network programmer, or just want to see what’s possible, you’ll find that .NET Network Programming is a complete guide to the capabilities of networking in the .NET framework.

What you’ll learn from this book:

  • Network programming fundamentals, TCP & UDP.

    Enabling you to send and receive files and messages over IP. Using either of the
    two main Internet protocols, TCP (Transmission control Protocol) or UDP (User datagram protocol).
    Source code is given to implement file transfer applications, along with rudimentary Instant-Messenger
    style applications. Examples are given in both C# and, and provide both socket level and
    TcpClient / TcpListener (and UdpClient) level options for implementation.
  • An in-depth look at HTTP clients & servers.
    Taking a hands-on approach to HTTP, this chapter provides examples on how to request data from
    web servers programmatically, using native .NET classes such as HttpWebRequest and HttpWebResponse.
    The examples provide information on including POST headers, Cookies, referrers etc., into your HTTP
    requests to retrieve data from dynamic pages on remote webservers. The chapter also provides a wealth of
    information in embedding Internet Explorer in your .NET applications, which can be used to provide greatly
    simplified HTML extraction through direct access to Internet Explorers’ DOM (document object model) using
    the HTMLDocument interface. Also included in the chapter is an example of a multithreaded web server, with
    support for Mime types, expandable to support ASP.NET pages with the “System.Web.Hosting” namespaces’ CreateApplicationHost and HttpWorkerRequest classes.
  • How to send and receive email, via SMTP, POP3, and the MAPI.

  • In Chapter 5, The SMTP (RFC 821) protocol and POP3 (RFC 1939) protocol are detailed, and socket level
    implementations are given. However, higher level descriptions are also provided, such as those using
    the “System.Web.Mail” namespace’s MailMessage class. This class leverages Microsoft’s CDOSYS architecture,
    to provide added performance, and functionality, such as attachments and inline images. The high-level alternative to POP3 is the MAPI, (Office automation), this automates the operation of Microsoft Outlook, exposing the full
    functionality of the product, including utilities such as the address book etc. Also included in the chapter is a description of the IMAP (used for email, but quite rare) and NNTP (news / usenet).
    Included in a later chapter is a description on how to implement DNS MX (Mail exchange) which enables
    you to determine the associated SMTP/POP3 server of any given email address, providing a means to
    automatically discover the outgoing SMTP server address, or bypass a local SMTP server

  • Transferring and receiving files via FTP

  • This chapter provides a detailed open-source implementation of a fully featured FTP client (RFC 959). This
    provides support for folder navigation, file upload and download, and integral support for Passive (PASV) FTP
    for firewall traversal. As with all examples in this book, they are provided in both C# and
    A simplified example of an FTP client, using the Microsoft Internet Transfer Control (ITC) is also provided. As
    this control is a legacy ActiveX COM object, the example demonstrates how to use COM interop late-binding (i.e.
    Activator.CreateInstance) to include COM functionality in your .NET applications.

  • Securing your network application, using rock-solid digital security.

  • When you look at security and Cryptography from the eyes of someone that is trying to crack your system, you will be all the more aware of where potential failings may lie. In this section, security is viewed from a cryptoanalists
    perspective, with a view to exploiting weaknesses in Symmetric and asymmetric encryptive algorithms. Symmetric encryption algorithms described include DES (DESCryptoServiceProvider), RC2 (RC2CryptoServiceProvider), Triple-DES
    (TripleDESCryptoServiceProvider), Rijndael (RijndaelManaged). An Asymetric encryption scheme, namely RSA (RSACryptoServiceProvider) is also provided.
    Beyond encryption, the section also explores information Hashing, using MD5 (MD5CryptoServiceProvider) and SHA (SHA1Managed). Also, code examples on reading and installing both client and server X509 digital cetificates is also provided. Other topics in this section include Windows authentication (NTLM, Kerberos) and .NET passport authentication.

  • Boosting the performance of your network application with Zip compression & multicast

  • This section is concerned with getting the most out of available bandwidth. This dicusses techniques such as caching, UDP Multicast Sockets (using the MulticastOption Class), Lossless compress (Zip), Lossy compression (image & Video) and more advanced techiques such as IO completion ports etc.

    Also the issue of scalability is discussed in depth, with issues such as load balancing, replication, redundancy,
    thread pooling, future-proofing (i.e. IPv6 compatibility).

  • Communicate using XML, with Remoting and Web services

  • This chapter teaches you the basics of .NET Remoting (the successor to DCOM), including configuration and deployment for real-world applications. It discusses the many ways in which to host a Remoteable object (Windows Service, IIS, or application), as well the means to invoke such a service (Synchronous, asynchronous, and OneWay). Going beyond the basics, it discusses remoting channels & Sinks (IMessageSink interface), object lifetime (ILease interface), Versioning, Events, and so forth.
    The webservice example in this chaper demonstrates how to create an XML web service (ASMX file) which can retrieve the IP address of a client computer from the underlying HTTP serverVariables. It also describes both Asyncronous and synchronous invokation of a web service.

  • Listen in on network traffic, with packet level networking

  • This chapter descibed how to listen for packets in promiscous mode (also known as packet capture or packet Sniffing), that is to say using either native .NET code (using socket.IOControl SIO_RCVALL), or using a packet
    driver (). This chapter includes information on how to interpret this data, including Ethernet frame header (or PPP frame headers), as well as the non-IP protocols, such as ARP, Netbios, etc.
    In addition to this, the chapter also describes the upcoming features in .NET Whidbey for Windows Longhorn, which
    provide information on available network interfaces and statistics, via the NetworkInformation class.

  • Access legacy databases remotely

  • Where a legacy system relies on a database which has no in-built facility to provide remote access to the data store (such as Microsoft Access, dBase, CSV files etc.), this book provides a great number of examples on how to do this.
    Either deep (or shallow) serializing to XML, and served via a custom server (chapter 2 & 3), or by creating a COM+ Queued component in .NET, which would leverage MSMQ (Microsoft message queue), and OleDb to access the database. (chapter 15). In fact, with an entire chapter devoted to MSMQ, you could expand upon this to provide support for Journals, Dead letter queues, Acknowledgements, and so forth.

  • Make your computer answer your phone for you, with .NET telephony

  • This chapter provides source code for using the TAPI in .NET. TAPI allows C# and applications listen for and respond to incomming phone calls. Namely, the type of systems used in call centers and expensive CTI (computer telephony Integration) applications. The examples provided use the TAPI32 DLL’s ported from TAPI .h such as lineAnswer, lineInitialize , lineNegotiateAPIVersion, lineOpen ,lineGetDevCaps, lineSetStatusMessages ,lineDrop , and lineShutdown. Also included in the chapter is how to directly invoke modem functions via the comm port using the MSCOMM ActiveX (COM) object to make outgoing calls. The examples in this chapter can be expanded upon to make and recieve VOIP (H323) calls, and leverage SAPI to record and playback speech over the telephone via TAPI.

Table of Contents of this book

Copyright 2020 Infinite Loop Ltd.

Source Article