示例#1
0
 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));
        }
示例#3
0
 /// <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));
         }
     }
 }
示例#4
0
文件: Client.cs 项目: vinhui/Packets
        /// <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);
            }
        }
示例#5
0
 private static void Client_FailedToConnect() => FailedToConnect?.Invoke();