private void ConnectingEnded(Task task) { if (task.IsFaulted || task.IsCanceled) { FailedToConnect?.Invoke(this, EventArgs.Empty); } if (task.IsCompleted && _mqttClient.IsConnected) { _mqttClient.Subscribe(new[] { "almue/config" }, new[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); } }
private static T1 GetFromServer <T1>(string sendMessage, string returnMessage, string serializedObject = "") where T1 : ServerObject, new() { ConnectionInfo serverConnectionInfo; if (ip == null) { return(default(T1)); } try { serverConnectionInfo = new ConnectionInfo(ip, CommonInfo.ServerPort); } catch (Exception e) { Console.WriteLine(e.ToString()); //ShowMessage("Failed to parse the server IP and port. Please ensure it is correct and try again"); return(default(T1)); } try { TCPConnection serverConnection = TCPConnection.GetConnection(serverConnectionInfo); string serializedObj; if (serializedObject == "") { serializedObj = serverConnection.SendReceiveObject <string>(sendMessage, returnMessage, 30000); } else { serializedObj = serverConnection.SendReceiveObject <string, string>(sendMessage, returnMessage, 30000, serializedObject); } T1 obj = new T1(); obj.DeserializeFromString(serializedObj); return(obj); } catch (CommsException e) { Console.WriteLine(e.ToString()); /*AppendLineToChatHistory("Error: A communication error occurred while trying to send message to " + serverConnectionInfo + ". Please check settings and try again.");*/ FailedToConnect?.Invoke(); } catch (Exception e) { Console.WriteLine(e.ToString()); /*AppendLineToChatHistory("Error: A general error occurred while trying to send message to " + serverConnectionInfo + ". Please check settings and try again.");*/ } return(default(T1)); }
/// <summary>接続先との接続を試みます。</summary> public void Connect(string ip, int port) { if (!IsConnected) { try { _client = new TcpClient(); _endPoint = new IPEndPoint(IPAddress.Parse(ip), port); _client.Connect(_endPoint); IsConnected = true; } catch (FormatException ex) { Dispose(); FailedToConnect?.Invoke(this, new ExceptionMessageEventArgs(ex.Message)); } catch (SocketException ex) { Dispose(); FailedToConnect?.Invoke(this, new ExceptionMessageEventArgs(ex.Message)); } } }
/// <summary> /// Start connecting to the server /// </summary> /// <returns>Returns a task that you can wait on</returns> public async Task Start() { Logger.Info("Starting clients"); try { await tcpClient.ConnectAsync(serverIp, serverPort); Logger.Info("Connected to server"); stream = tcpClient.GetStream(); listenThread = new Thread(StartListening); listenThread.Start(); if (PingIntervalMs > 0) { pingThread = new Thread(() => { while (tcpClient?.Connected ?? false) { Logger.Debug("Sending ping to server"); Send(new PingPacket { SendTime = DateTime.UtcNow }); Thread.Sleep(PingIntervalMs); } }); pingThread.Start(); } } catch (Exception ex) { Logger.Error("Failed to connect"); Logger.Error(ex); FailedToConnect?.Invoke(this, EventArgs.Empty); } }
private static void Client_FailedToConnect() => FailedToConnect?.Invoke();