C#

Introduction to C# Networking


C# is a versatile programming language for building networking applications. Whether you need to create client-server applications, communicate over the internet, or work with network protocols, C# provides powerful libraries and features for networking. In this guide, you'll get an introduction to C# networking and sample code to help you get started.

The System.Net Namespace

C# networking capabilities are primarily provided through the `System.Net` namespace. This namespace includes classes for working with various networking protocols and services.

Creating a Simple TCP Client

Let's start with a basic example of creating a TCP client in C# that connects to a server. In this example, we'll use the `TcpClient` class from the `System.Net.Sockets` namespace.

Example of creating a TCP client:

using System;
using System.Net.Sockets;
using System.Text;
class Program
{
    static void Main()
    {
        // Define the server's IP address and port
        string serverIP = `127.0.0.1`;
        int serverPort = 12345;
        try
        {
            // Create a TCP client and connect to the server
            using (TcpClient client = new TcpClient(serverIP, serverPort))
            {
                Console.WriteLine(`Connected to the server.`);
                // Get the network stream for sending and receiving data
                NetworkStream stream = client.GetStream();
                // Send data to the server
                string message = `Hello, Server!`;
                byte[] data = Encoding.UTF8.GetBytes(message);
                stream.Write(data, 0, data.Length);
                Console.WriteLine(`Sent: ` + message);
                // Receive data from the server
                data = new byte[256];
                int bytesRead = stream.Read(data, 0, data.Length);
                string response = Encoding.UTF8.GetString(data, 0, bytesRead);
                Console.WriteLine(`Received: ` + response);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(`Error: ` + ex.Message);
        }
    }
}
    

Creating a Simple TCP Server

Now, let's create a basic TCP server in C# that listens for incoming client connections. In this example, we'll use the `TcpListener` class from the `System.Net.Sockets` namespace.

Example of creating a TCP server:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class Program
{
    static void Main()
    {
        // Define the server's IP address and port
        string serverIP = `127.0.0.1`;
        int serverPort = 12345;
        // Create a TCP listener and start listening for incoming connections
        TcpListener listener = new TcpListener(IPAddress.Parse(serverIP), serverPort);
        listener.Start();
        Console.WriteLine(`Server is listening for incoming connections...`);
        try
        {
            while (true)
            {
                // Accept an incoming client connection
                TcpClient client = listener.AcceptTcpClient();
                Console.WriteLine(`Client connected.`);
                // Get the network stream for sending and receiving data
                NetworkStream stream = client.GetStream();
                // Receive data from the client
                byte[] data = new byte[256];
                int bytesRead = stream.Read(data, 0, data.Length);
                string request = Encoding.UTF8.GetString(data, 0, bytesRead);
                Console.WriteLine(`Received: ` + request);
                // Process the client's request and send a response
                string response = `Hello, Client!`;
                data = Encoding.UTF8.GetBytes(response);
                stream.Write(data, 0, data.Length);
                Console.WriteLine(`Sent: ` + response);
                // Close the client connection
                client.Close();
                Console.WriteLine(`Client disconnected.`);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(`Error: ` + ex.Message);
        }
        finally
        {
            // Stop listening for connections
            listener.Stop();
            Console.WriteLine(`Server stopped.`);
        }
    }
}
    

Conclusion

C# provides a robust set of networking capabilities for building client-server applications and communicating over various network protocols. You've learned the basics of creating a TCP client and server in C#. As you continue your programming journey, you'll explore more advanced topics in networking, such as working with UDP, web requests, and network security.

Practice creating networking applications to become proficient in C# network programming. Networking is essential for building distributed systems, web applications, and many other types of software that require communication over networks.

Written by Surfside Media

Senior Full Stack Developer specializing in Web Technologies.