Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Free Learning
Arrow right icon
Hands-On Network Programming with C# and .NET Core
Hands-On Network Programming with C# and .NET Core

Hands-On Network Programming with C# and .NET Core: Build robust network applications with C# and .NET Core

eBook
€17.99 €26.99
Paperback
€32.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Table of content icon View table of contents Preview book icon Preview Book

Hands-On Network Programming with C# and .NET Core

Networks in a Nutshell

It's hard to imagine that anyone reading this book doesn't have some intuitive idea of what a network actually is. As I write this introduction, I'm surrounded by no fewer than six distinct, network-connected devices within arm's reach. Even before I began a career in software engineering, I could have given a reasonably accurate description of what constitutes a network. However, no amount of intuition about what networks are or what might run on them, nor the use of software running on distributed systems, can account for the impact of a distributed architecture on your code. It's that impact on your software design and implementation decisions that we'll cover in this chapter.

We'll try to nail down a concrete definition of a network, and we'll consider the new problems you'll need to solve when writing software...

Technical requirements

This being an introductory chapter, there will be no meaningful code samples, as we'll be covering the high-level concepts and vocabulary of networks to establish a clear foundation for the rest of the book. However, in this chapter, we'll be discussing the System.Net class library provided by .NET Core. While this discussion will be happening at a very high level, it would be a good opportunity to familiarize yourself with the development tools made available to you by Microsoft Visual Studio Community edition. This is free to use, and provides a rich feature suite out of the box, with broad support for .NET Core project management and administration provided out of the box. As we discuss some of the libraries provided within the .NET Core tools, I encourage you to investigate using the Visual Studio IDE to include those libraries into your project...

Expanding the scope of software – distributed systems and the challenges they introduce

The first step to understanding programming for networks is, of course, understanding networks. Defining what they are, clarifying the aspects of networks we are concerned with, addressing how network architecture impacts the programs we write, and what kinds of software solutions networks need to be effective.

What is a network?

At its most basic, a network is nothing more than a physical implementation of an undirected graph; a series of nodes and edges, or connections, between those nodes, as demonstrated in the following diagram:

A basic, undirected graph

However, the preceding diagram doesn't quite capture the full picture...

Topologies and physical infrastructure

Having spent a sufficient amount of time discussing what a network is, we should now consider how networks are actually implemented. This section will consider the various solutions that the engineers have arrived at to build systems that meet the definition of a network. We'll discuss the distinction between a logical and a physical topology for a network, and then examine the most common examples of the former.

Physical and logical topologies

In the same way that the topology of a geographic region describes how the features of that region are arranged over the area of the region, the topology of a network describes how the components of that network are arranged relative to one...

The software impact of distributing resources on a network

All this talk of device-agnosticism and open communication might sound extremely abstract up to this point. You may well be reading this and wondering yeah, so what? I don't have to code a network switch, which is probably true. It is certainly true that you won't have to code a network switch in C# using .NET Core, since that is quite a bit beyond the scope and capabilities of the framework, and thus, this book. The impact of the unpredictability of a network on your software, however, will be pretty substantial, and that will be true no matter what part of the network stack you're programming for. So, let's look at some of the ways your code should be prepared for distributed systems.

Security

...

Network objects and data structures in .NET Core

It may sound like a daunting task to start writing network code from scratch, and in some cases, it absolutely is. There is help, however, in the form of the .NET Core class libraries. With these libraries, you'll be well positioned to start working with clean abstractions for complicated, and often frustrating, network protocols and standards to start producing valuable components on a distributed network.

Using System.Net

The using statement might be one of the most important statements you can include in source files containing any sort of networking code. The System.Net namespace is a suite of general-purpose .NET Core classes and utilities for programming most protocols...

A whole new computing world

The maximum value a piece of software can deliver is limited by the number of downstream consumers of that software who have the ability to leverage it. Deploying your software on a widely available network can increase the overall impact it has on your organization or community of consumers. This last section takes a look at the kinds of applications opened up by this transition.

Long – distance communication

Thanks to communication protocols such as File Transfer Protocol (FTP) and Simple Mail Transfer Protocol (SMTP), it is possible to write to, or receive a letter from, someone on the entire other side of the globe within a few seconds of them having sent it. This feat of engineering...

Summary

This chapter took a very deep dive on a small handful of subjects. We delivered a carefully considered definition of a network, and then considered how the key components of that definition impact our development strategies for network programs. We considered the distinction between a physical and logical network topology, and then explored the most common logical topologies we'll be working with. Lastly, we considered what kinds of new design decisions and strategies we'll have to make as we start to write our first network programs, as well as the .NET classes that will help us implement those strategies easily and cleanly.

In the next chapter, we'll take the first steps into programming for networks, as we look into resource location and addressing.

Questions

  1. What is the definition of a network?
  2. What is the difference between a physical and logical topology?
  3. Which was the only network topology discussed in this chapter that is not exposed to a potential single point of failure?
  4. What are some of the physical devices that implement channels of communication on a network? What physical devices serve as nodes?
  5. What is the root namespace for the most common networking libraries and classes provided by .NET Core?
  6. Name at least four classes exposed by the System.Net namespace.
  7. What are the four other most commonly used namespaces provided by .NET Core for reliable and stable network programming?

Further reading

For additional general information on networks, check out Building Modern Networks by Steven Noble, which is available through Packt Publishing. It's a great resource for understanding the challenges facing modern network engineers, and a good, deep dive into the applications of the concepts discussed in this chapter.

Left arrow icon Right arrow icon

Key benefits

  • Explore various network architectures that make distributed programming possible
  • Learn how to make reliable software by writing secure interactions between clients and servers
  • Use .NET Core for network device automation, DevOps, and software-defined networking

Description

The C# language and the .NET Core application framework provide the tools and patterns required to make the discipline of network programming as intuitive and enjoyable as any other aspect of C# programming. With the help of this book, you will discover how the C# language and the .NET Core framework make this possible. The book begins by introducing the core concepts of network programming, and what distinguishes this field of programming from other disciplines. After this, you will gain insights into concepts such as transport protocols, sockets and ports, and remote data streams, which will provide you with a holistic understanding of how network software fits into larger distributed systems. The book will also explore the intricacies of how network software is implemented in a more explicit context, by covering sockets, connection strategies such as Transmission Control Protocol (TCP) and User Datagram Protocol (UDP), asynchronous processing, and threads. You will then be able to work through code examples for TCP servers, web APIs served over HTTP, and a Secure Shell (SSH) client. By the end of this book, you will have a good understanding of the Open Systems Interconnection (OSI) network stack, the various communication protocols for that stack, and the skills that are essential to implement those protocols using the C# programming language and the .NET Core framework.

Who is this book for?

If you're a .NET developer or a system administrator with .NET experience and are looking to get started with network programming, then this book is for you. Basic knowledge of C# and .NET is assumed, in addition to a basic understanding of common web protocols and some high-level distributed system designs.

What you will learn

  • Understand the breadth of C# s network programming utility classes
  • Utilize network-layer architecture and organizational strategies
  • Implement various communication and transport protocols within C#
  • Discover hands-on examples of distributed application development
  • Gain hands-on experience with asynchronous socket programming and streams
  • Learn how C# and the .NET Core runtime interact with a hosting network
  • Understand a full suite of network programming tools and features

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Mar 29, 2019
Length: 488 pages
Edition : 1st
Language : English
ISBN-13 : 9781789345834
Vendor :
Microsoft
Languages :
Concepts :
Tools :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Mar 29, 2019
Length: 488 pages
Edition : 1st
Language : English
ISBN-13 : 9781789345834
Vendor :
Microsoft
Languages :
Concepts :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
€189.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts
€264.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total 128.97
C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development
€65.99
Hands-On Design Patterns with C# and .NET Core
€29.99
Hands-On Network Programming with C# and .NET Core
€32.99
Total 128.97 Stars icon
Banner background image

Table of Contents

25 Chapters
Section 1: Foundations of Network Architecture Chevron down icon Chevron up icon
Networks in a Nutshell Chevron down icon Chevron up icon
DNS and Resource Location Chevron down icon Chevron up icon
Communication Protocols Chevron down icon Chevron up icon
Packets and Streams Chevron down icon Chevron up icon
Section 2: Communicating Over Networks Chevron down icon Chevron up icon
Generating Network Requests in C# Chevron down icon Chevron up icon
Streams, Threads, and Asynchronous Data Chevron down icon Chevron up icon
Error Handling over the Wire Chevron down icon Chevron up icon
Section 3: Application Protocols and Connection Handling Chevron down icon Chevron up icon
Sockets and Ports Chevron down icon Chevron up icon
HTTP in .NET Chevron down icon Chevron up icon
FTP and SMTP Chevron down icon Chevron up icon
The Transport Layer - TCP and UDP Chevron down icon Chevron up icon
Section 4: Security, Stability, and Scalability Chevron down icon Chevron up icon
The Internet Protocol Chevron down icon Chevron up icon
Transport Layer Security Chevron down icon Chevron up icon
Authentication and Authorization on Networks Chevron down icon Chevron up icon
Caching Strategies for Distributed Systems Chevron down icon Chevron up icon
Performance Analysis and Monitoring Chevron down icon Chevron up icon
Section 5: Advanced Subjects Chevron down icon Chevron up icon
Pluggable Protocols in .NET Core Chevron down icon Chevron up icon
Network Analysis and Packet Inspection Chevron down icon Chevron up icon
Remote Logins and SSH Chevron down icon Chevron up icon
Other Books You May Enjoy Chevron down icon Chevron up icon

Customer reviews

Top Reviews
Rating distribution
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.6
(8 Ratings)
5 star 50%
4 star 12.5%
3 star 12.5%
2 star 0%
1 star 25%
Filter icon Filter
Top Reviews

Filter reviews by




Joseph Hinton Jun 14, 2019
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This book was fantastic. If you already have some foundational knowledge of C# and want a deeper understanding this book is for you. This is the Harry Potter of programming books except in this wizarding world Dumbledore is the author Sean Burns and Harry isn't unbearable.
Amazon Verified review Amazon
Winfield Moses May 26, 2019
Full star icon Full star icon Full star icon Full star icon Full star icon 5
It helped me immensely. Very detailed.
Amazon Verified review Amazon
Bernard Clark Oct 09, 2019
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I consider myself an intermediate C# developer and this was at a good level for me to get started with network programming.
Amazon Verified review Amazon
yy Jul 13, 2020
Full star icon Full star icon Full star icon Full star icon Full star icon 5
The author assume no background in network program from his reader. Basic concepts like TCP/IP, UDP, HTML, TLS etc. are patiently explained to certain detail. Though not very deep in its contents, other deep-dive references are provided for further reading after each chapter.
Amazon Verified review Amazon
Amazon Customer May 06, 2019
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
good tutorials
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.