C# network communication IPv6 over TCP socket
Petr Faltus development
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