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; }
#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 }); }
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(); } }
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("================================="); }
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("================================="); }
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); }
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); } }
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)); } } }
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); } }
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(); } }
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); }
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); }
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(); } }
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; }); }
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(); } }
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(); } }
private static void ClientOnMessageReceived(SimpleSocketClient client, string msg) { Console.WriteLine("Message from client received."); }
private void TCPClient_ConnectedToServer(SimpleSocketClient client) { this.TCPClient.SendMessage("Sync"); Debug.WriteLine("Connected to server"); }
private static void ClientOnMessageUpdateFileTransfer(SimpleSocketClient a, string origin, string loc, double percentageDone, MessageState state) { WriteLine("Sending message to server: " + percentageDone + "%"); }
private static void ClientOnConnectedToServer(SimpleSocketClient client) { Console.WriteLine("Client has connected to the server."); }
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)); } }
private static void ClientOnMessageSubmitted(SimpleSocketClient client, bool close) { _receivedSubmitted.Count(); }
private void TCPClient_FileReceiver(SimpleSocketClient client, int currentPart, int totalPart, string location, SimpleSockets.Messaging.MessageState state) { Debug.WriteLine("Resived File: " + location + " State: " + state); }
private void TCPClient_MessageReceived(SimpleSocketClient client, string msg) { Debug.WriteLine("Message Received: " + msg); this.Engine.AddButton(JSONButton.FromJSON(msg)); }
private static void AntVaultClient_ObjectReceived(SimpleSocketClient client, object obj, Type objType) { }
private void TCPClient_DisconnectedFromServer(SimpleSocketClient client) { Debug.WriteLine("Disconnected from server"); }
#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 }