Exemple #1
0
        public async Task StartAsync(string address, ushort port, string password, string name)
        {
            Debug.Assert(!Running);
            Debug.Assert(port > 0);
            Debug.Assert(address != null);

            Client = new SimpleSocketClient <SocketData>();

            if (!string.IsNullOrEmpty(password))
            {
                Client.SetPassword(password);
            }
            await Client.StartAsync(address, port);

            try
            {
                await CheckAsync(name);
            }
            catch
            {
                Client.Close();
                throw;
            }
            Client.Session.ReceivedData += Session_ReceivedData;
            Running = true;
        }
Exemple #2
0
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed

        internal static void Connect()
        {
            AntVaultClient = new SimpleSocketTcpClient();
            if (HasSetupEvents == false)
            {
                AntVaultClient.BytesReceived   += BytesReceived;
                AntVaultClient.MessageReceived += MessageReceived;
                AntVaultClient.ObjectReceived  += AntVaultClient_ObjectReceived;
                HasSetupEvents = true;
                Console.WriteLine("Events setup complete");
            }
            try
            {
                AntVaultClient.StartClient(App.AuxiliaryClientWorker.ReadFromConfig("IP", MainClientWorker.ConfigDir), Convert.ToInt32(App.AuxiliaryClientWorker.ReadFromConfig("Port", MainClientWorker.ConfigDir)));
                Task.Run(() => AntVaultClient.SendMessage("/ServerStatus?"));
                Task.Run(() => Console.WriteLine("Requested server's status"));
                Task.Run(() => Application.Current.Dispatcher.Invoke(() =>
                {
                    WindowController.LoginPage.ConnectButton.Content = "Loading...";
                })
                         );
            }
            catch (Exception exc)
            {
                Task.Run(() => Console.WriteLine("Could not connect to the server due to " + exc));
                Task.Run(() => Application.Current.Dispatcher.Invoke(() =>
                {
                    WindowController.LoginPage.StatusLabel.Content = "ERROR-Server offline, try to Vault later.";
                })
                         );
                Thread.Sleep(3000);
                Connect();
            }
        }
 /// <summary>
 /// </summary>
 /// <param name="client"></param>
 public AuthProtocolClient(SimpleSocketClient <AuthProtocol, AuthProtocol> client = null)
 {
     _client = client ??
               new SimpleSocketClient <AuthProtocol, AuthProtocol>(new SimpleSocketConfig {
         Port = AuthProtocol.DefaultPort
     });
 }
Exemple #4
0
        public void StressPerformanceTest(int cnt)
        {
            var server = SimpleSocket.CreateServer(new Calculator());
            var client = new SimpleSocketClient <SimpleData, SimpleData>();

            try
            {
                server.Start();
                var          sw     = Stopwatch.StartNew();
                IList <Task> agenda = new List <Task>();
                for (var i = 0; i <= cnt; i++)
                {
                    agenda.Add(client.CallAsync(new SimpleData {
                        Command = 1, Arg = i, Arg2 = i
                    }));
                }
                Task.WaitAll(agenda.ToArray());
                sw.Stop();
                Console.WriteLine(sw.Elapsed);
                Console.WriteLine(((decimal)cnt) / ((decimal)sw.Elapsed.TotalMilliseconds) * 1000m);
            }
            finally
            {
                server.Stop();
            }
        }
Exemple #5
0
 private static void ClientOnClientErrorThrown(SimpleSocketClient client, Exception ex)
 {
     _receivedError.Count();
     Console.WriteLine("=================================");
     Console.WriteLine("Client Error.");
     Console.WriteLine(ex.Message);
     Console.WriteLine("Stacktrace: " + ex.StackTrace);
     Console.WriteLine("=================================");
 }
Exemple #6
0
 private static void ClientOnMessageFailed(SimpleSocketClient client, byte[] payload, Exception ex)
 {
     _receivedError.Count();
     Console.WriteLine("=================================");
     Console.WriteLine("Client Error.");
     Console.WriteLine(ex.Message);
     Console.WriteLine("Stacktrace: " + ex.StackTrace);
     Console.WriteLine("=================================");
 }
Exemple #7
0
        public void Client_CanConnect_ToServer()
        {
            s = new SimpleSocketServer();
            var listen = s.StartListening(GetFreePort());

            c = new SimpleSocketClient("test");
            c.Connect(GetFreePort(), s_DefaultHost).Wait();

            Assert.IsTrue(c.IsConnected);
        }
Exemple #8
0
 private static void ClientOnObjectReceived(SimpleSocketClient a, object obj, Type objType)
 {
     WriteLine("Received an object of type = " + objType.FullName);
     if (obj.GetType() == typeof(Person))
     {
         var p = (Person)obj;
         WriteLine("Person: ");
         WriteLine("Name:" + p.Name);
         WriteLine("Firstname:" + p.FirstName);
         WriteLine("Street: " + p.Street);
     }
 }
        private void SendMessageWithMetadata(SimpleSocketClient client)
        {
            string message = "This is test message nr ";
            IDictionary <object, object> dictionary = new Dictionary <object, object>();

            dictionary.Add("Key1", new DataObject("Test", "This is a text", 10.56, new DateTime(2000, 1, 1)));
            dictionary.Add("Key2", new DataObject("Test2", "This is a second test", 11, new DateTime(2000, 1, 1)));


            for (var i = 0; i < _numMessages; i++)
            {
                client.SendMessageWithMetadata(message + (i + 1), dictionary);
            }
        }
Exemple #10
0
        public void BasicFunctionality()
        {
            var server = SimpleSocket.CreateServer(new HelloWorldHandler());
            var client = new SimpleSocketClient <int, string>();

            try{
                server.Start();
                Assert.AreEqual("hello", client.Call(1));
                Assert.AreEqual("привет", client.Call(2));
            }
            finally{
                server.Stop();
            }
        }
        private void SendMessages(SimpleSocketClient client, bool sendObjects)
        {
            string message = "This is test message nr ";

            for (var i = 0; i < _numMessages; i++)
            {
                if (sendObjects)
                {
                    client.SendObject(new DataObject(message + (i + 1), "This is a text", 15, new DateTime(2000, 1, 1)));
                }
                else
                {
                    client.SendMessage(message + (i + 1));
                }
            }
        }
Exemple #12
0
        private static void ClientOnFolderReceiver(SimpleSocketClient a, int currentPart, int totalParts, string loc, MessageState state)
        {
            if (state == MessageState.ReceivingData)
            {
                if (progress == null)
                {
                    progress = new ProgressBar();
                    System.Console.Write("Receiving a Folder... ");
                }

                var progressDouble = ((double)currentPart / totalParts);

                progress.Report(progressDouble);

                if (progressDouble >= 1.00)
                {
                    progress.Dispose();
                    progress = null;
                    Thread.Sleep(200);
                    WriteLine("Folder Received.");
                }
            }



            if (state == MessageState.Decrypting)
            {
                WriteLine("Decrypting Folder this might take a while.");
            }
            if (state == MessageState.Decompressing)
            {
                WriteLine("Decompressing the Folder this might take a while.");
            }
            if (state == MessageState.DecompressingDone)
            {
                WriteLine("Decompressing has finished.");
            }
            if (state == MessageState.DecryptingDone)
            {
                WriteLine("Decrypting has finished.");
            }
            if (state == MessageState.Completed)
            {
                WriteLine("Folder received and stored at location: " + loc);
            }
        }
Exemple #13
0
        public void BinaryFormatterFunctionality()
        {
            var server = SimpleSocket.CreateServer(new Calculator());
            var client = new SimpleSocketClient <SimpleData, SimpleData>();

            try{
                server.Start();
                Assert.AreEqual(10, client.Call(new SimpleData {
                    Command = 1, Arg = 6, Arg2 = 4
                }).Result);
                Assert.AreEqual(2, client.Call(new SimpleData {
                    Command = 2, Arg = 6, Arg2 = 4
                }).Result);
            }
            finally{
                server.Stop();
            }
        }
Exemple #14
0
        public void Server_GetsConnectionMessages_FromClient()
        {
            s = new SimpleSocketServer();
            s.MessageReceived += ServerLogReceivedCallback;
            var listen = s.StartListening(GetFreePort());

            c  = new SimpleSocketClient("test");
            c1 = new SimpleSocketClient("test1");
            c2 = new SimpleSocketClient("test2");

            Task.WaitAll(new Task <bool>[]
            {
                c.Connect(),
                c1.Connect(),
                c2.Connect()
            });

            CollectionAssert.AreEquivalent(new[] { "test", "test1", "test2" }, m_ServerLogs);
        }
Exemple #15
0
        public void MultipleClients_CanConnect_ToServer()
        {
            s = new SimpleSocketServer();
            var listen = s.StartListening(GetFreePort());

            c  = new SimpleSocketClient("test");
            c1 = new SimpleSocketClient("test1");
            c2 = new SimpleSocketClient("test2");

            Task.WaitAll(new Task <bool>[]
            {
                c.Connect(GetFreePort(), s_DefaultHost),
                c1.Connect(GetFreePort(), s_DefaultHost),
                c2.Connect(GetFreePort(), s_DefaultHost)
            });

            Assert.IsTrue(c.IsConnected);
            Assert.IsTrue(c1.IsConnected);
            Assert.IsTrue(c2.IsConnected);
        }
Exemple #16
0
        public void CanStopAndStartListener()
        {
            var server = SimpleSocket.CreateServer(new HelloWorldHandler());
            var client = new SimpleSocketClient <int, string>();

            try
            {
                server.Start();
                client.Call(1);
                //Assert.AreEqual("hello", client.Call(1));
                server.Stop();
                Assert.Throws <AggregateException>(() => client.Call(1));
                server.Start();
                client.Call(1);
                //Assert.AreEqual("hello", client.Call(1));
            }
            finally
            {
                server.Stop();
            }
        }
Exemple #17
0
        private static void HandleNewUser(SimpleSocketClient AntVaultClient, string MessageString)
        {
            string Sender = AuxiliaryClientWorker.GetElement(MessageString, "-U ", ".");

            RequestUsersList(AntVaultClient, LoginClientWorker.CurrentUser);
            MainWindowController.MainWindow.Dispatcher.Invoke(() =>
            {
                #region New user joined pulse
                System.Windows.Controls.Label StatusLabel = new System.Windows.Controls.Label();
                StatusLabel.FontSize             = 18;
                StatusLabel.FontStyle            = FontStyles.Oblique;
                StatusLabel.FontStyle            = FontStyles.Italic;
                StatusLabel.Foreground           = System.Windows.Media.Brushes.Black;
                StatusLabel.MouseLeftButtonDown += This;
                StatusLabel.Content              = Sender + " has joined the vault!";
                #endregion
                MainWindowController.ChatParagraph.Inlines.Add(StatusLabel);
                MainWindowController.ChatParagraph.Inlines.Add(Environment.NewLine);
                MainWindowController.ChatDocument.Blocks.Add(MainWindowController.ChatParagraph);
                MainWindowController.MainPage.ClientChatTextBox.Document = MainWindowController.ChatDocument;
            });
        }
Exemple #18
0
        private static void Main(string[] args)
        {
            _encrypt  = true;
            _compress = true;

            var jsonSer = new MessageTesting.JsonSerialization();
            var xmlSer  = new XmlSerialization();
            var binSer  = new BinarySerializer();

            var cert = new X509Certificate2(File.ReadAllBytes(Path.GetFullPath(@"C:\Users\" + Environment.UserName + @"\Desktop\test.pfx")), "Password");

            _client = new SimpleSocketTcpClient();
            //_client = new SimpleSocketTcpSslClient(cert);

            _client.ObjectSerializer    = jsonSer;
            _client.EnableExtendedAuth  = true;
            _client.AllowReceivingFiles = true;


            //Create the MessageContract implementation and add to the client
            _messageAContract = new MessageA("MessageAHeader");
            _client.AddMessageContract(_messageAContract);
            //Bind MessageContract Event
            _messageAContract.OnMessageReceived += MessageAContractOnOnMessageReceived;

            BindEvents();


            _client.StartClient("127.0.0.1", 13000);
            while (true)
            {
                Options();


                WriteLine("Press any key to continue...");
                System.Console.Read();
                System.Console.Clear();
            }
        }
Exemple #19
0
        private static void Main(string[] args)
        {
            _encrypt  = true;
            _compress = false;

            var xmlSer = new XmlSerialization();
            var binSer = new BinarySerializer();

            _client = new SimpleSocketTcpClient();
            //_client = new SimpleSocketTcpSslClient(@"PATH\TO\CERT.pfx", "Password");

            _client.ObjectSerializer    = binSer;
            _client.EnableExtendedAuth  = true;
            _client.AllowReceivingFiles = true;


            //Create the MessageContract implementation and add to the client
            _messageAContract = new MessageA("MessageAHeader");
            _client.AddMessageContract(_messageAContract);
            //Bind MessageContract Event
            _messageAContract.OnMessageReceived += MessageAContractOnOnMessageReceived;

            BindEvents();
            _client.StartClient("127.0.0.1", 13000);


            while (true)
            {
                Options();


                WriteLine("Press any key to continue...");
                System.Console.Read();
                System.Console.Clear();
            }
        }
Exemple #20
0
 private static void ClientOnMessageReceived(SimpleSocketClient client, string msg)
 {
     Console.WriteLine("Message from client received.");
 }
Exemple #21
0
 private void TCPClient_ConnectedToServer(SimpleSocketClient client)
 {
     this.TCPClient.SendMessage("Sync");
     Debug.WriteLine("Connected to server");
 }
Exemple #22
0
 private static void ClientOnMessageUpdateFileTransfer(SimpleSocketClient a, string origin, string loc, double percentageDone, MessageState state)
 {
     WriteLine("Sending message to server: " + percentageDone + "%");
 }
Exemple #23
0
 private static void ClientOnConnectedToServer(SimpleSocketClient client)
 {
     Console.WriteLine("Client has connected to the server.");
 }
Exemple #24
0
 internal static void MessageReceived(SimpleSocketClient Client, string MessageString)
 {
     Console.WriteLine("[DEBUG] " + MessageString);
     if (MessageString.StartsWith("/AcceptConnection"))
     {
         MessageBox.Show("Authentication successfull!" + Environment.NewLine + "Entering the vault...", "Success", MessageBoxButton.OK, MessageBoxImage.Information);
         Task.Run(() => MainClientWorker.OpenMainPage());
     }
     if (MessageString.StartsWith("/DenyConnection"))
     {
         MessageBox.Show("Authetincation failed, please revise the login information you have provided", "Login error", MessageBoxButton.OK, MessageBoxImage.Error);
     }
     if (MessageString.StartsWith("/ServerStatus"))
     {
         string ServerStatus = App.AuxiliaryClientWorker.GetElement(MessageString, "/ServerStatus ", ";");
         Console.WriteLine("Server's status is " + ServerStatus);
         Application.Current.Dispatcher.Invoke(() =>
         {
             WindowController.LoginPage.StatusLabel.Content = ServerStatus;
             Client.SendMessage("/ServerTheme?");
         });
     }
     if (MessageString.StartsWith("/DefaultTheme"))
     {
         Console.WriteLine("Received default theme callback, will not try to update the track");
         App.Current.Dispatcher.Invoke(() =>
         {
             WindowController.LoginPage.ConnectButton.Content   = "Connect";
             WindowController.LoginPage.ConnectButton.IsEnabled = true;
         });
     }
     if (MessageString.StartsWith("/NewTheme"))
     {
         NewThemeMode = true;
     }
     if (MessageString.StartsWith("/DefaultLoginScreen"))
     {
         Console.WriteLine("Received default login screen callback, will not try to update");
         App.Current.Dispatcher.Invoke(() =>
         {
             WindowController.LoginPage.ConnectButton.Content   = "Connect";
             WindowController.LoginPage.ConnectButton.IsEnabled = true;
         });
     }
     if (MessageString.StartsWith("/NewLoginScreen"))
     {
         NewLoginScreenMode = true;
     }
     if (MessageString.StartsWith("/UserStringInfo"))
     {
         Task.Run(() => MainClientWorker.AssignUserInfo(MessageString));
     }
     if (MessageString.StartsWith("/UserProfilePictureMode"))
     {
         UserProfilePictureMode = true;
     }
     if (MessageString.StartsWith("/UserFriendsListMode"))
     {
         UserFriendsListMode = true;
     }
     if (MessageString.StartsWith("/OnlineUsersListMode"))
     {
         OnlineUsersMode = true;
     }
     if (MessageString.StartsWith("/OnlineProfilePicturesMode"))
     {
         OnlineProfilePicturesMode = true;
     }
     if (MessageString.StartsWith("/NewProfilePicture"))
     {
         UserToUpdateProfilePicture = App.AuxiliaryClientWorker.GetElement(MessageString, "-U ", ";");
         Console.WriteLine("User that sent the profile picture update pulse is " + UserToUpdateProfilePicture);
         NewProfilePictureMode = true;
     }
     if (MessageString.StartsWith("/NewUser"))
     {
         NewUser = App.AuxiliaryClientWorker.GetElement(MessageString, "-U ", " -S");
         Console.WriteLine("New user is " + NewUser);
         Task.Run(() => MainClientWorker.AssignNewOnlineUser(MessageString));
         NewOnlineUserMode = true;
     }
     if (MessageString.StartsWith("/YourPage"))
     {
         CurrentPageUpdateMode = true;
     }
     if (MessageString.StartsWith("/UserDisconnect"))
     {
         Task.Run(() => MainClientWorker.HadndleDisconnect(MessageString));
     }
     if (MessageString.StartsWith("/Message") == true)
     {
         Task.Run(() => MainClientWorker.HandleMessage(MessageString));
     }
 }
Exemple #25
0
 private static void ClientOnMessageSubmitted(SimpleSocketClient client, bool close)
 {
     _receivedSubmitted.Count();
 }
Exemple #26
0
 private void TCPClient_FileReceiver(SimpleSocketClient client, int currentPart, int totalPart, string location, SimpleSockets.Messaging.MessageState state)
 {
     Debug.WriteLine("Resived File: " + location + " State: " + state);
 }
Exemple #27
0
 private void TCPClient_MessageReceived(SimpleSocketClient client, string msg)
 {
     Debug.WriteLine("Message Received: " + msg);
     this.Engine.AddButton(JSONButton.FromJSON(msg));
 }
Exemple #28
0
 private static void AntVaultClient_ObjectReceived(SimpleSocketClient client, object obj, Type objType)
 {
 }
Exemple #29
0
 private void TCPClient_DisconnectedFromServer(SimpleSocketClient client)
 {
     Debug.WriteLine("Disconnected from server");
 }
Exemple #30
0
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed


        internal static async void BytesReceived(SimpleSocketClient Client, byte[] MessageByte)
        {
#pragma warning disable CS4014                                                                // Because this call is not awaited, execution of the current method continues before the call is completed

            string MessageString = App.AuxiliaryClientWorker.GetStringFromBytes(MessageByte); //Translates stuff for debugging purposes
            #region debugging
            if (MessageString.StartsWith("�PNG") == false && MessageString.Contains("System.Collections.ObjectModel.Collection") == false && MessageString.Contains("WAVEfmt") == false && MessageString.Contains("GIF89a") == false && MessageString.Contains("2005/10/xaml/entry") == false)
            {
                Console.WriteLine("[Debug]: " + MessageString);
            }
            else if (MessageString.StartsWith("�PNG") == false && MessageString.Contains("System.Collections.ObjectModel.Collection") == true)
            {
                Console.WriteLine("[Collection]");
            }
            else if (MessageString.StartsWith("�PNG") == true && MessageString.Contains("System.Collections.ObjectModel.Collection") == false)
            {
                Console.WriteLine("[Image]");
            }
            else if (MessageString.Contains("WAVEfmt") == true && MessageString.Contains("System.Collections.ObjectModel.Collection") == false && MessageString.StartsWith("�PNG") == false)
            {
                Console.WriteLine("[Wav]");
            }
            else if (MessageString.Contains("GIF89a") == true && MessageString.Contains("WAVEfmt") == false && MessageString.Contains("System.Collections.ObjectModel.Collection") == false && MessageString.StartsWith("�PNG") == false)
            {
                Console.WriteLine("[GIF]");
            }
            else if (MessageString.Contains("2005/10/xaml/entry") && MessageString.Contains("WAVEfmt") == false && MessageString.Contains("System.Collections.ObjectModel.Collection") == false && MessageString.StartsWith("�PNG") == false)
            {
                Console.WriteLine("[XAML]");
            }
            else
            {
                Console.WriteLine("[Unknown data format]");
            }
            #endregion
            if (NewThemeMode == true)
            {
                NewThemeMode = false;
                await Task.Run(() => MainClientWorker.AssignNewTheme(MessageByte));

                await Task.Run(() => Application.Current.Dispatcher.Invoke(() =>
                {
                    Client.SendMessage("/ServerLoginScreen?");
                })
                               );
            }
            if (NewLoginScreenMode == true)
            {
                NewLoginScreenMode = false;
                Task.Run(() => MainClientWorker.AssignNewLoginScreen(MessageByte));
                App.Current.Dispatcher.Invoke(() =>
                {
                    WindowController.LoginPage.ConnectButton.Content   = "Connect";
                    WindowController.LoginPage.ConnectButton.IsEnabled = true;
                });
            }
            if (UserProfilePictureMode == true)
            {
                UserProfilePictureMode = false;
                Task.Run(() => MainClientWorker.AssignProfilePicture(MessageByte));
            }
            if (UserFriendsListMode == true)
            {
                UserFriendsListMode = false;
                Task.Run(() => MainClientWorker.AssingFriendsList(MessageByte));
            }
            if (OnlineUsersMode == true)
            {
                OnlineUsersMode = false;
                Task.Run(() => MainClientWorker.AssignOnlineUsers(MessageByte));
                Console.WriteLine("Sorting out friends list for " + MainClientWorker.CurrentUser + ", registering " + MainClientWorker.CurrentFriendsList.Count + " entries");
                Application.Current.Dispatcher.Invoke(() =>
                {
                    WindowController.MainPage.FriendsListTextBox.Document = App.SortFriendsList();
                });
            }
            if (OnlineProfilePicturesMode == true)
            {
                OnlineProfilePicturesMode = false;
                Task.Run(() => MainClientWorker.AssignOnlinePictures(MessageByte));
                Console.WriteLine("Assigned list for online users");
            }
            if (NewProfilePictureMode == true)
            {
                NewProfilePictureMode = false;
                Task.Run(() => MainClientWorker.UpdateProfilePicture(UserToUpdateProfilePicture, MessageByte));
            }
            if (NewOnlineUserMode == true)
            {
                NewOnlineUserMode = false;
                await Task.Run(() => MainClientWorker.AssignNewOnlineUserProfilePicture(MessageByte, NewUser));
            }
            if (CurrentPageUpdateMode == true)
            {
                Console.WriteLine("Received page updade for " + MainClientWorker.CurrentUser + "'s profile page");
                CurrentPageUpdateMode = false;
                MainClientWorker.AssignCurrentUserPage(MessageByte);
            }
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
        }