Skip to content

Instantly share code, notes, and snippets.

@b1oki
Created April 20, 2019 12:10
Show Gist options
  • Save b1oki/525611c23791f238db3c4b729b8f9ca6 to your computer and use it in GitHub Desktop.
Save b1oki/525611c23791f238db3c4b729b8f9ca6 to your computer and use it in GitHub Desktop.
C# UDP
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace TestClient
{
internal static class Program
{
private const int PortNo = 5000;
private const string ServerIp = "127.0.0.1";
private static void Main()
{
Console.WriteLine("Create socket");
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
var localIp = new IPEndPoint(IPAddress.Parse(ServerIp), PortNo);
var remotePoint = new IPEndPoint(localIp.Address, localIp.Port);
try
{
var message = "Client time is " + DateTime.Now;
Console.WriteLine("Sending : " + message);
socket.SendTo(Encoding.Unicode.GetBytes(message), remotePoint);
Console.WriteLine("Wait answer");
var builder = new StringBuilder();
do
{
var receivedData = new byte[256];
var bytes = socket.Receive(receivedData);
Console.WriteLine("Get answer");
builder.Append(Encoding.Unicode.GetString(receivedData, 0, bytes));
} while (socket.Available > 0);
Console.WriteLine("Receive: {0} - {1}", DateTime.Now, builder);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
socket.Close();
}
Console.WriteLine("End");
}
}
}
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace TestServer
{
internal static class Program
{
private const int PortNo = 5000;
private const string ServerIp = "127.0.0.1";
private static void Main()
{
Console.WriteLine("Create socket");
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
var localIp = new IPEndPoint(IPAddress.Parse(ServerIp), PortNo);
try
{
socket.Bind(localIp);
while (true)
{
Console.WriteLine("Wait connection");
var builder = new StringBuilder();
var remoteIp = new IPEndPoint(IPAddress.Any, 0) as EndPoint;
do
{
var receivedData = new byte[256];
var bytes = socket.ReceiveFrom(receivedData, ref remoteIp);
Console.WriteLine("Connection start");
builder.Append(Encoding.Unicode.GetString(receivedData, 0, bytes));
} while (socket.Available > 0);
var remoteFullIp = remoteIp as IPEndPoint;
Console.WriteLine("Receive: {0} - {1}:{2} - {3}",
DateTime.Now, remoteFullIp.Address, remoteFullIp.Port, builder);
var message = "Server time is " + DateTime.Now;
Console.WriteLine("Sending : " + message);
socket.SendTo(Encoding.Unicode.GetBytes(message), remoteIp);
Console.WriteLine("Connection end");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
Console.WriteLine("End");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment