summaryrefslogtreecommitdiffstats
path: root/samples/SimpleMessaging/ServerApp/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'samples/SimpleMessaging/ServerApp/Program.cs')
-rw-r--r--samples/SimpleMessaging/ServerApp/Program.cs66
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
+ ));
+ }
+ }
+}