/// <summary> /// Initializing server. /// </summary> /// <param name="ip">If ip null or empty, it will using loopback address. If ip setting as *, it will use any address in network.</param> public BasicTcpServer(string ip, int port, TcpSettings tcpSettings = null) { IPAddress _IPAddress; if (string.IsNullOrEmpty(ip)) { _IPAddress = IPAddress.Loopback; } else if (ip == "*") { _IPAddress = IPAddress.Any; } else { if (!IPAddress.TryParse(ip, out _IPAddress)) { _IPAddress = Dns.GetHostEntry(ip).AddressList[0]; } } TcpSettings = tcpSettings; if (TcpSettings == null) { TcpSettings = new TcpSettings(600000, 600000); } _Listener = new TcpListener(_IPAddress, port); _Listener.Server.SendTimeout = TcpSettings.SendTimeout; _Listener.Server.ReceiveTimeout = TcpSettings.ReceiveTimeout; TcpSettings.Socket = _Listener.Server; _Token = _TokenSource.Token; }
/// <summary> /// Initializing TCP client. /// </summary> /// <param name="autoReconnectTime">Time to reconnect to server in MS. Disabled if set to 0.</param> public BasicTcpClient(string ip, int port, uint autoReconnectTime = 0, TcpSettings tcpSettings = null) { if (string.IsNullOrEmpty(ip)) { throw new ArgumentNullException(nameof(ip)); } if (port < 0) { throw new ArgumentException("Port must be zero or greater."); } try { _AutoReconnectTime = autoReconnectTime; if (!IPAddress.TryParse(ip, out _IPAddress)) { _IPAddress = Dns.GetHostEntry(ip).AddressList[0]; } _Port = port; TcpSettings = tcpSettings; if (TcpSettings == null) { TcpSettings = new TcpSettings(600000, 600000); } _Client = new TcpClient { ReceiveTimeout = TcpSettings.ReceiveTimeout, SendTimeout = TcpSettings.SendTimeout }; _Token = _TokenSource.Token; TcpSettings.TcpClient = _Client; _IsInitialized = true; } catch (Exception ex) { if (autoReconnectTime != 0) { StartAutoReconnect(); } else { throw ex; } } }