public void TestParseFromMessage() { string correctResult = "TCPConnectTo;TestUser;-1;;;127.0.0.1;12345"; ExtendedUser exUserToTest = new ExtendedUser(new User("Tom",-1),IPAddress.Parse("192.168.23.1"),1234); Message message = new Message("192.168.23.1;1234"); message.FromUser = new User("Tom", -1); message.ToUser = null; Assert.AreEqual(exUserToTest.Name, ExtendedUser.ParseFromMessage(message).Name); Assert.AreEqual(exUserToTest.Id, ExtendedUser.ParseFromMessage(message).Id); Assert.AreEqual(exUserToTest.IpAddress, ExtendedUser.ParseFromMessage(message).IpAddress); Assert.AreEqual(exUserToTest.Port, ExtendedUser.ParseFromMessage(message).Port); Assert.True(exUserToTest.Equals(exUserToTest)); }
public void TestEquals() { ExtendedUser exUserToTest = new ExtendedUser(new User("Tom", -1), IPAddress.Parse("192.168.23.1"), 1234); ExtendedUser exUserEqual = new ExtendedUser(new User("Tom", -1), IPAddress.Parse("192.168.23.1"), 1234); ExtendedUser exUserUnequalName = new ExtendedUser(new User("Tomi", -1), IPAddress.Parse("192.168.23.1"), 1234); ExtendedUser exUserUnequalId = new ExtendedUser(new User("Tom", 3), IPAddress.Parse("192.168.23.1"), 1234); ExtendedUser exUserUnequalIp = new ExtendedUser(new User("Tom", -1), IPAddress.Parse("192.168.26.1"), 1234); ExtendedUser exUserUnequalPort = new ExtendedUser(new User("Tom", -1), IPAddress.Parse("192.168.23.1"), 5234); Assert.True(exUserToTest.Equals(exUserEqual)); Assert.False(exUserToTest.Equals(exUserUnequalName)); Assert.False(exUserToTest.Equals(exUserUnequalId)); Assert.True(exUserToTest.Equals(exUserUnequalIp)); Assert.True(exUserToTest.Equals(exUserUnequalPort)); }
/// <summary> /// Generates a message out of an extendedUser of a connect message /// </summary> /// <param name="message"></param> /// <returns></returns> public static string GenerateConnectMessage(ExtendedUser exUser) { return GenerateConnectMessage(exUser, exUser.IpAddress, exUser.Port); }
/// <summary> /// Checks if username and id are equal /// </summary> /// <param name="user"></param> /// <returns></returns> public bool Equals(ExtendedUser user) { return base.Equals(user); }
/// <summary> /// Creates an extendedUser out of the configuration information /// </summary> /// <returns></returns> public static ExtendedUser ConfigurationToExtendedUser() { try { ExtendedUser exUser = new ExtendedUser(Configuration.localUser); exUser.ipAddress = Configuration.localIpAddress; exUser.port = Configuration.selectedTcpPort; return exUser; } catch (NullReferenceException) { return null; } }
/// <summary> /// Parses from a tcp connect <see cref="Message"/> the external user and their port and ip address /// </summary> /// <param name="message">Needs an TCP-connect message, more information at <see cref="Message"/></param> /// <returns>The external user out of this message</returns> public static ExtendedUser ParseFromMessage(Message message) { try { Logger.LogFatal("Message content+" + message.MessageContent); ExtendedUser exUser = new ExtendedUser(message.FromUser); String[] split = message.MessageContent.Split(';'); exUser.ipAddress = IPAddress.Parse(split[0]); exUser.port = int.Parse(split[1]); return exUser; } catch (Exception ex) { Logger.LogException("Exception while parsing a message. ", ex); } return null; }
/// <summary> /// Connect manually to the selected ip and port. /// </summary> /// <param name="ipAndPort"></param> internal void ManualConnectToIPAndPort(string ipAndPort) { if (ipAndPort == "") { return; } else { String[] split = ipAndPort.Split(':'); try { ExtendedUser ex = new ExtendedUser("#ManualConnect"); ex.IpAddress = IPAddress.Parse(split[0]); ex.Port = int.Parse(split[1]); if (!programControl.NetworkService.ManualConnectToExUser(ex)) { chatForm.InformUser("Verbindung nicht möglich, da die Gegenseite nicht antwortet."); return; } currentlyActiveChatUser = ex; } catch (Exception e) { Logger.LogException("Fehlerhafter String ", e); } } }
/// <summary> /// Disconnects from the current user /// </summary> /// <param name="ex"></param> internal void ManualDisconnectFromExUser(ExtendedUser ex) { lock (incomingConnectionLock) { if (ConnectionOverClient) { tcpClient.Disconnect(); ConnectionOverClient = false; } } }
/// <summary> /// Connect to the given address external user, who has the address informations inside. /// </summary> /// <param name="exUser"></param> internal bool ManualConnectToExUser(ExtendedUser exUser) { bool success = false; lock (incomingConnectionLock) { if (control.GraphicControl.CurrentlyActiveChatUser != null && exUser.Equals(control.GraphicControl.CurrentlyActiveChatUser)) { return false; } if (!ConnectionOverServer) { try { success = tcpClient.ReConnect(exUser.IpAddress, exUser.Port); if (success) { ConnectionOverClient = true; } }catch(SocketException ex) { CloseConnectionFromClient(); } } } return success; }
public UserConnection(ExtendedUser user, Socket socket) { this.user = user; this.socket = socket; }