I have a server sending a request to a TinyClr app
If I wait for the request in a loop, the request is received
var listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(new IPEndPoint(IPAddress.Any, 8080));
listener.Listen(1);
while (true)
{
var client = listener.Accept();
var buffer = new byte[1024];
var received = client.Receive(buffer);
var data = Encoding.UTF8.GetString(buffer, 0, received);
var response = Encoding.UTF8.GetBytes("Data received: " + data);
client.Send(response);
client.Close();
}
But I want to get the request handled by the NetworkController_NetworkAddressChanged
The event are defined but they are never called
What do I miss here ?
networkController.NetworkAddressChanged += NetworkController_NetworkAddressChanged;
networkController.NetworkLinkConnectedChanged += NetworkController_NetworkLinkConnectedChanged;
private static void NetworkController_NetworkAddressChanged(NetworkController sender, NetworkAddressChangedEventArgs e)
{
Debug.WriteLine(“NetworkAddressChanged event triggered.”);
var ipProperties = sender.GetIPProperties();
var address = ipProperties.Address.GetAddressBytes();
Debug.WriteLine("IP: " + address[0] + "." + address[1] + "." + address[2] + "." + address[3]);
Debug.WriteLine($"IP Address: {ipProperties.Address}");
try
{
_listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_listener.Bind(new IPEndPoint(ipProperties.Address, 8080));
_listener.Listen(1);
_serverTimer = new Timer(ServerTimerCallback, null, 0, 1000); // Check for connections every second
}
catch (SocketException ex)
{
Debug.WriteLine($"SocketException: {ex.Message}");
}
catch (Exception ex)
{
Debug.WriteLine($"Exception: {ex.Message}");
}
}
private static void NetworkController_NetworkLinkConnectedChanged(NetworkController sender, NetworkLinkConnectedChangedEventArgs e)
{
Debug.WriteLine($“NetworkLinkConnectedChanged event triggered. Connected: {e.Connected}”);
if (e.Connected)
{
Debug.WriteLine("Network connected");
}
else
{
Debug.WriteLine("Network disconnected");
}
}
private static void ServerTimerCallback(object state)
{
try
{
if (_listener != null && _listener.Poll(0, SelectMode.SelectRead))
{
var client = _listener.Accept();
var buffer = new byte[1024];
int received = client.Receive(buffer);
var data = Encoding.UTF8.GetString(buffer, 0, received);
var response = Encoding.UTF8.GetBytes("Data received: " + data);
client.Send(response);
client.Close();
}
}
catch (SocketException ex)
{
Debug.WriteLine($"SocketException in ServerTimerCallback: {ex.Message}");
}
catch (Exception ex)
{
Debug.WriteLine($"Exception in ServerTimerCallback: {ex.Message}");
}
}