This repository has been archived on 2025-12-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
SamaPager/SamaPager_Server/Server.cs
2025-10-02 09:14:55 +02:00

69 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace SamaPager_Server
{
internal class Server
{
internal IPAddress ListeningIp { get; set; }
internal int Port { get; set; }
internal UdpClient UdpServer { get; set; }
internal IPEndPoint ServerEndPoint { get; set; }
internal Server(IPAddress listeningIP, int port)
{
this.ListeningIp = listeningIP;
this.Port = port;
}
internal string StartServer()
{
ServerEndPoint = new IPEndPoint(this.ListeningIp, this.Port);
try
{
this.UdpServer = new UdpClient(ServerEndPoint);
return $"Listening on {ServerEndPoint}";
}
catch(Exception ex)
{
return $"Error ({ex.Message})";
}
}
internal string StartListening()
{
IPEndPoint receiveEndPoint = ServerEndPoint;
byte[] receivedBytes = UdpServer.Receive(ref receiveEndPoint);
string receivedMessage = Encoding.UTF8.GetString(receivedBytes);
byte[] bytesToSend;
switch (receivedMessage)
{
case "!getDateTime":
bytesToSend = Encoding.UTF8.GetBytes($"Hi, it's {DateTime.Now}");
this.UdpServer.Send(bytesToSend, bytesToSend.Length, receiveEndPoint);
return $"Command \"!getDateTime\" received by {receiveEndPoint}, sent local server time";
case "!getCurrentDir":
bytesToSend = Encoding.UTF8.GetBytes($"I'm working in {Environment.CurrentDirectory}");
this.UdpServer.Send(bytesToSend, bytesToSend.Length, receiveEndPoint);
return $"Command \"!getCurrentDir\" received by {receiveEndPoint}, sent server working directory";
case "!getCurrentUser":
bytesToSend = Encoding.UTF8.GetBytes($"Hi, I'm running as {Environment.UserName}");
this.UdpServer.Send(bytesToSend, bytesToSend.Length, receiveEndPoint);
return $"Time command received by {receiveEndPoint}, sent the user server is running on";
default:
return $"[{DateTime.Now}] {receiveEndPoint}: {receivedMessage}";
}
}
internal void KillServer()
{
this.UdpServer.Close();
}
}
}