diff options
Diffstat (limited to 'samples/SimpleMessaging/ServerApp/Program.cs')
-rw-r--r-- | samples/SimpleMessaging/ServerApp/Program.cs | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/samples/SimpleMessaging/ServerApp/Program.cs b/samples/SimpleMessaging/ServerApp/Program.cs new file mode 100644 index 0000000..449cf0c --- /dev/null +++ b/samples/SimpleMessaging/ServerApp/Program.cs @@ -0,0 +1,66 @@ +using System; +using Hik.Communication.Scs.Communication.EndPoints.Tcp; +using Hik.Communication.Scs.Communication.Messages; +using Hik.Communication.Scs.Server; + +/* This program is build to demonstrate a server application that listens incoming + * client connections and reply messages. + */ + +namespace ServerApp +{ + class Program + { + static void Main() + { + //Create a server that listens 10085 TCP port for incoming connections + var server = ScsServerFactory.CreateServer(new ScsTcpEndPoint(10085)); + + //Register events of the server to be informed about clients + server.ClientConnected += Server_ClientConnected; + server.ClientDisconnected += Server_ClientDisconnected; + + server.Start(); //Start the server + + Console.WriteLine("Server is started successfully. Press enter to stop..."); + Console.ReadLine(); //Wait user to press enter + + server.Stop(); //Stop the server + } + + static void Server_ClientConnected(object sender, ServerClientEventArgs e) + { + Console.WriteLine("A new client is connected. Client Id = " + e.Client.ClientId); + + //Register to MessageReceived event to receive messages from new client + e.Client.MessageReceived += Client_MessageReceived; + } + + static void Server_ClientDisconnected(object sender, ServerClientEventArgs e) + { + Console.WriteLine("A client is disconnected! Client Id = " + e.Client.ClientId); + } + + static void Client_MessageReceived(object sender, MessageEventArgs e) + { + var message = e.Message as ScsTextMessage; //Server only accepts text messages + if (message == null) + { + return; + } + + //Get a reference to the client + var client = (IScsServerClient)sender; + + Console.WriteLine("Client sent a message: " + message.Text + + " (Cliend Id = " + client.ClientId + ")"); + + //Send reply message to the client + client.SendMessage( + new ScsTextMessage( + "Hello client. I got your message (" + message.Text + ")", + message.MessageId //Set first message's id as replied message id + )); + } + } +} |