Ejemplo n.º 1
0
 static async Task DoPingAndReconnect()
 {
     if (!await OtherCamCom.PingAdr(ConfigControl.savedIP.stringVal) || !sock.Connected)
     {
         OtherCamCom.LabelDisplay(false);
         TryConnect();
     }
 }
Ejemplo n.º 2
0
        public Uri ConfirmAdr(bool showErrors, string fullAdr, bool doPing)
        {
            try {
                Uri    newUri   = null;
                string errorMsg = "";

                try {
                    newUri = new Uri(fullAdr);
                } catch {
                    errorMsg = "Address was invalid!\n";
                }

                if (newUri != null && !ConfigControl.ignoreAddress.boolVal &&
                    settings.isMainPlayer && doPing)
                {
                    if (!OtherCamCom.PingAdr(newUri.Host).Result)
                    {
                        errorMsg += "Address had no RTSP stream attached!\n";
                    }
                }

                if (errorMsg != "")
                {
                    if (showErrors)
                    {
                        MessageBox.Show(errorMsg);
                    }
                    return(null);
                }

                return(newUri);
            } catch (Exception e) {
                if (showErrors)
                {
                    Tools.ShowPopup("Failed to parse address!\nShow more?", "Error Occurred!", e.ToString());
                }
                return(null);
            }
        }
Ejemplo n.º 3
0
        private static bool Connect(IPEndPoint ep, bool showErrors)   //Connects to the socket
        {
            try {
                if (sock == null || ep == null || ep.Address == null || ep.Port == 0 || ep.Address.ToString().Length == 0)
                {
                    return(false);
                }
                else if (sock.Connected && ep.ToString() == sock.RemoteEndPoint.ToString())
                {
                    return(true);
                }
                else if (sock.Connected && ep.ToString() != sock.RemoteEndPoint.ToString())
                {
                    Console.WriteLine("trying to disconnect " + sock.RemoteEndPoint.ToString() + "\n" + ep.ToString());
                    Disconnect(true);
                }

                Console.WriteLine("trying to connect to " + ep.Address.ToString() + ":" + ep.Port.ToString());

                if (!ConfigControl.forceCamera.boolVal)
                {
                    InfoPanel.i.isCamera = false;
                }

                sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                bool parsedIP   = IPAddress.TryParse(ep.Address.ToString(), out IPAddress ip);
                bool parsedPort = int.TryParse(ep.Port.ToString(), out int port);

                string errorMessage = "IP (" + ep.Address.ToString() + ") valid: " + parsedIP.ToString() + "\nPort (" + ep.Port.ToString()
                                      + ") valid: " + parsedPort.ToString();

                if (!parsedIP || !parsedPort)
                {
                    if (showErrors)
                    {
                        Tools.ShowPopup("Failed to parse endpoint!\nAddress provided is likely invalid!\nShow more?", "Failed to connect!",
                                        errorMessage);
                    }
                    return(false);
                }

                if (!OtherCamCom.PingAdr(ep.Address.ToString()).Result)
                {
                    if (showErrors)
                    {
                        Tools.ShowPopup("Failed to ping IP address!\nAddress provided is likely invalid!\nShow more?", "Failed to connect!",
                                        errorMessage + "\nPing: Failed");
                    }
                    return(false);
                }

                IPEndPoint end = new IPEndPoint(ip, port);

                if (end == null)
                {
                    return(false);
                }

                OtherCamCom.CheckIsSameSubnet(ep.Address.ToString());

                connecting = sock.BeginConnect(end, ConnectCallback, null);

                MainForm.m.WriteToResponses("Successfully connected to: " + end.Address.ToString() + ":" + end.Port.ToString(), true);
                InitReconnectTimer();
                return(true);
            } catch (SocketException ex) {
                MainForm.m.WriteToResponses(ex.Message, false);
            } catch (ObjectDisposedException ex) {
                MainForm.m.WriteToResponses(ex.Message, false);
            } catch (Exception e) {
                if (showErrors)
                {
                    MessageBox.Show("An error occured whilst connecting to camera!\n" + e.ToString());
                }
                Console.WriteLine("CONNECT\n" + e.ToString());
            }

            return(false);
        }