示例#1
0
 private static void cnt_elem_refr(GlobalTypes.HostInfo host_inf,
                                   GlobalTypes.SysMessageStruct msg,
                                   GlobalTypes.ClientInfo item,
                                   bool flag)
 {
     if ((Encoding.UTF8.GetString(msg.Msg) == "SYN") && (msg.Flag == 2))
     {
         if (!flag)
         {
             item = new GlobalTypes.ClientInfo(host_inf);
             lock (MainWindow.Client_Catalog)
             {
                 MainWindow.Client_Catalog.Add(item);
             }
             RCScreenClient.paint_thmb_scr(item);
         }
         else
         {
             lock (MainWindow.Client_Catalog)
             {
                 item.HostInfo       = host_inf;
                 item.LastConnection = DateTime.Now;
             }
         }
         lock (XPorter.Bus.Main_Handle.TreeUngroup)
         {
             XPorter.Bus.Main_Handle.TreeUngroup.Dispatcher.BeginInvoke(new MethodInvoker(delegate()
             {
                 System.Windows.Controls.ContextMenu item_menu = ReinCorpDesign.sources.UserContextMenu.get_contx_menu(item);
                 if (XPorter.Bus.Main_Handle.TreeUngroup.IsExpanded == false)
                 {
                     XPorter.Bus.Main_Handle.TreeUngroup.IsExpanded = true;
                 }
                 TreeViewItem tr_item = new TreeViewItem();
                 tr_item.ContextMenu  = item_menu;
                 tr_item.Header       = item.HostInfo.Addr.ToString();
                 tr_item.Tag          = "3";
                 XPorter.Bus.Main_Handle.TreeUngroup.Items.Add(tr_item);
             }));
         }
         Thread   thr_tmp = new Thread(RCScreenClient.get_query);
         Object[] args    = new Object[2];
         args[0]      = item;
         args[1]      = new GlobalTypes.ServiceMessageStruct("GET", 0);
         thr_tmp.Name = "get_query";
         thr_tmp.SetApartmentState(ApartmentState.STA);
         //thr_tmp.Start(args);
     }
 }
示例#2
0
 //function which send msg by TCP protocol to all users
 public static void send_to_all_sys_msg(GlobalTypes.SysMessageStruct msg)
 {
     if (!Threads_Already_Started)                                                                                   //if user push multiconnect a couple of time
     {
         MainWindow.thr_killer(RCScreenClient.thr_Get_Img_From_UDP);
         foreach (var item in MainWindow.Client_Catalog)
         {
             TcpClient client = get_tcp(item.HostInfo.Addr, GlobalTypes.Settings.TCPPort);
             if (client != null)
             {
                 send_to <GlobalTypes.SysMessageStruct>(client.GetStream(), msg);                                                               //analyze msg for further actions
                 client.Close();
             }
         }
     }
 }
示例#3
0
        //create connection between two point
        public static TcpClient cnt_estblsh(TcpClient tcp_client)
        {
            tcp_client.Client.ReceiveTimeout = 5000;
            tcp_client.Client.SendTimeout    = 5000;
            try
            {
                GlobalTypes.SysMessageStruct msg = new GlobalTypes.SysMessageStruct();
                NetworkStream net_stream         = tcp_client.GetStream();
                send_to <GlobalTypes.SysMessageStruct>(net_stream, new GlobalTypes.SysMessageStruct("CNT", 0));
                msg = receive_from <GlobalTypes.SysMessageStruct>(net_stream);

                if ((Encoding.UTF8.GetString(msg.Msg) == "PAS") && (msg.Flag == 0))
                {
                    send_to <GlobalTypes.SysMessageStruct>(net_stream, new GlobalTypes.SysMessageStruct("PAS", 1, GlobalTypes.Settings.Password));
                    msg = receive_from <GlobalTypes.SysMessageStruct>(net_stream);

                    if ((Encoding.UTF8.GetString(msg.Msg) == "SYN"))
                    {
                        switch (msg.Flag)
                        {
                        case 1:
                            return(tcp_client);

                            break;

                        case 100:
                            MessageBox.Show(DateTime.Now.ToString() + " IPAddress:" +
                                            ((IPEndPoint)tcp_client.Client.RemoteEndPoint).Address.ToString() + " - Wrong Password"
                                            );
                            return(null);

                            //Сюда создать логи
                            break;

                        default:
                            return(null);

                            break;
                        }
                    }
                }
            }
            catch (SocketException ex) { /*MessageBox.Show(ex.ToString()); */ }
            catch (Exception ex) { /*MessageBox.Show(ex.ToString());*/ }
            return(null);
        }
示例#4
0
        //analyze msg for futher action
        public static void sys_msg_analyzer(TcpClient tcp_client, GlobalTypes.ClientInfo item, GlobalTypes.SysMessageStruct main_msg)
        {
            try {
                NetworkStream net_stream = tcp_client.GetStream();
                send_to <GlobalTypes.SysMessageStruct>(net_stream, main_msg);
                switch (Encoding.UTF8.GetString(main_msg.Msg))
                {
                    #region Screen
                case "SCR": {
                    switch (main_msg.Flag)
                    {
                    case 0: {
                        tcp_client.Client.ReceiveTimeout = 5000;
                        GlobalTypes.SysMessageStruct host_inf = receive_from <GlobalTypes.SysMessageStruct>(net_stream);
                        GlobalTypes.SysMessageStruct msg      = receive_from <GlobalTypes.SysMessageStruct>(net_stream);
                        if ((host_inf != null) && (msg != null))
                        {
                            cnt_elem_refr(new GlobalTypes.HostInfo(
                                              ((IPEndPoint)tcp_client.Client.RemoteEndPoint).Address,
                                              host_inf.Info), msg, item, item != null);
                        }
                        else
                        {
                            MessageBox.Show("Не удалось установить соединение");                 //Дописать в лог
                        }
                    } break;

                    case 11: {
                    }
                    break;

                    default: {
                        if ((main_msg.Flag > 0) && (main_msg.Flag < 11))
                        {
                        }
                    } break;
                    }
                } break;
                    #endregion
                }
            }
            catch (Exception ex) { MessageBox.Show("Lost Connection"); }
        }
示例#5
0
        public static int port_dealer(IPAddress address, GlobalTypes.SysMessageStruct msg, int start_port)
        {
            List <int> busy_ports = get_busy_port();
            byte       counter    = 0;
            int        port       = 0;

            while (counter < 10)
            {
                try
                {
                    TcpClient     connection = get_tcp(address, GlobalTypes.Settings.TCPPort);
                    NetworkStream ns         = connection.GetStream();
                    while ((busy_ports.IndexOf(start_port + counter) > -1) || (Opened_Ports.IndexOf(start_port + counter)) > -1)
                    {
                        start_port++;
                    }
                    msg.Info = Encoding.UTF8.GetBytes((start_port + counter).ToString());
                    send_to <GlobalTypes.SysMessageStruct>(ns, msg);
                    GlobalTypes.SysMessageStruct referer = receive_from <GlobalTypes.SysMessageStruct>(ns);
                    if ((Encoding.UTF8.GetString(referer.Msg).Equals("SYN")) && (referer.Flag == 3))
                    {
                        port = start_port + counter;
                        return(port);
                    }
                    if ((Encoding.UTF8.GetString(referer.Msg).Equals("ERR")) && (referer.Flag == 102))
                    {
                        counter++;
                    }
                    else
                    {
                        counter++;
                    }
                    connection.Client.Shutdown(SocketShutdown.Both);
                    connection.Close();
                }
                catch (SocketException ex) { counter++; break; }
                catch (Exception ex) { counter++; break; }
            }
            return(port);
        }