C# network communication IPv6 over TCP socket

Petr Faltus development

Example source code in Microsoft .NET csharp how to communicate in IPv6 over network TCP socket. The sender and the receiver.

NetTCP6receiver.cs

GitHub repository: network-socket-communication-source-codes

git clone https://github.com/petrfaltus/network-socket-communication-source-codes.git

Directories to NetTCP6receiver.cs in the repository: csharp/src

using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace NetTCP6receiver
{
    public class Program
    {
        private static readonly int RECEIVER_PORT = 10000;
        private static readonly int RECEIVED_MESSAGES_MAX = 10;
        private static readonly int BUFFER_SIZE = 4096;

        public static void Main(string[] args)
        {
            Console.WriteLine("TCP IPv6 stream socket receiver");

            try
            {
                Socket socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
                Console.WriteLine("- socket created");

                IPEndPoint receiver = new IPEndPoint(IPAddress.IPv6Any, RECEIVER_PORT);

                socket.Bind(receiver);
                Console.WriteLine("- socket bound on port {0}", RECEIVER_PORT);

                socket.Listen(RECEIVED_MESSAGES_MAX);
                Console.WriteLine("- socket is listening for max {0} messages", RECEIVED_MESSAGES_MAX);

                bool stop = false;
                while (stop == false)
                {
                    Socket msgsock = socket.Accept();
                    Console.WriteLine("- socket accepted request");

                    IPEndPoint peer = (IPEndPoint)msgsock.RemoteEndPoint;
                    IPEndPoint local = (IPEndPoint)msgsock.LocalEndPoint;
                    Console.WriteLine("- peer connect from [{0}]:{1} on [{2}]:{3}", peer.Address, peer.Port, local.Address, local.Port);

                    byte[] buffer = new byte[BUFFER_SIZE];
                    int received_length = msgsock.Receive(buffer);
                    string msg = Encoding.ASCII.GetString(buffer, 0, received_length);
                    Console.WriteLine("- message {0}B of {1}B received", msg.Length, received_length);
                    Console.WriteLine("|{0}|", msg);

                    if (msg.Equals("stop"))
                    {
                        // received message "stop" to stop the receiver
                        stop = true;
                    }

                    msgsock.Close();
                    Console.WriteLine("- socket closed request");
                }

                socket.Close();
                Console.WriteLine("- socket closed");
            }
            catch (Exception ex)
            {
                Console.WriteLine("- {0}", ex.Message);
            }
        }
    }
}

NetTCP6sender.cs

Directories to NetTCP6sender.cs in the repository: csharp/src

using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace NetTCP6sender
{
    public class Program
    {
        private static readonly string RECEIVER_ADDRESS = "::1";
        private static readonly int RECEIVER_PORT = 10000;

        public static void Main(string[] args)
        {
            Console.WriteLine("TCP IPv6 stream socket sender");

            try
            {
                Socket socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
                Console.WriteLine("- socket created");

                IPAddress receiver_address = IPAddress.Parse(RECEIVER_ADDRESS);
                IPEndPoint receiver = new IPEndPoint(receiver_address, RECEIVER_PORT);

                socket.Connect(receiver);
                Console.WriteLine("- connected to [{0}]:{1}", receiver_address, RECEIVER_PORT);

                IPEndPoint peer = (IPEndPoint)socket.RemoteEndPoint;
                IPEndPoint local = (IPEndPoint)socket.LocalEndPoint;
                Console.WriteLine("- for [{0}]:{1} bound on [{2}]:{3}", peer.Address, peer.Port, local.Address, local.Port);

                string msg;
                if (args.Length > 0)
                    msg = args[0]; // message is the first parameter, for example "stop" to stop the receiver
                else
                {
                    DateTime now = DateTime.Now;
                    msg = string.Format("This is C# message sent at {0} in {1}", now.ToString("d.M.yyyy"), now.ToString("H:mm:ss"));
                }
                Console.WriteLine("|{0}|", msg);

                byte[] buffer = Encoding.ASCII.GetBytes(msg);

                int sent_length = socket.Send(buffer);
                Console.WriteLine("- message {0}B of {1}B sent", sent_length, msg.Length);

                socket.Close();
                Console.WriteLine("- socket closed");
            }
            catch (Exception ex)
            {
                Console.WriteLine("- {0}", ex.Message);
            }
        }
    }
}

Development tools

Developer ASCII table
Characters and HTML entities in the UTF-8 table
 
Predefined web CSS colors
CSS px to rem converter

 

  

🤝 Your IP address is 2600:1f28:365:80b0:e655:538a:27ae:d312