Ejemplo n.º 1
0
        private void PriUplynutiDoby(object o)
        {
            UdpObjekt obj = o as UdpObjekt;

            obj.Klient.Close();
            obj.Timerek.Dispose();

            //m_Bot.Gui.VypisRadek("TIMEOUT");
        }
Ejemplo n.º 2
0
        private void ReceiveCallback(IAsyncResult ar)
        {
            UdpObjekt obj = ar.AsyncState as UdpObjekt;

            IPEndPoint ip = new IPEndPoint(obj.IP, obj.Protokol.Port);

            byte[] paketa;

            try
            {
                paketa = obj.Klient.EndReceive(ar, ref ip);
                obj.Timerek.Dispose();

                PacketReader reader = new PacketReader();
                reader.NactiPaketu(paketa);

                ServerInfo info = obj.Protokol.ZiskejInfo(reader);

                if (info != null)
                {
                    lock (m_Hlaska)
                        m_Hlaska.AppendLine(string.Format("Hra: {0} IP: {1} Mapa: {2} Poèet hráèù: {3} Poèet botù: {4}", info.Hra.ToString(), ip.Address.ToString(), info.Mapa, info.PocetHracu.ToString(), info.PocetBotu.ToString()));
                }

                reader.UvolniPaketu();
                obj.Klient.Close();
            }
            catch (NullReferenceException)
            {
                //ar mùže mùže být zøídka null nevím proè a je mi to jedno :)
            }
            catch (SocketException)
            {
                //m_Bot.Gui.VypisRadek("CATCH2");
            }
            catch (ObjectDisposedException) //vznikají když to zruším pøi timeoutu
            {
            }

            ZkontrolujStopku();
        }
Ejemplo n.º 3
0
        internal override void PriPouziti(SixBot bot, string odesilatel)
        {
            lock (CsServery)
            {
                if (m_CsServery.Count == 0)
                {
                    return;
                }

                m_MereniCasu.Reset();
                m_MereniCasu.Start();

                m_OtestovanoIP = 0;

                if (m_Hlaska.Length != 0)
                {
                    m_Hlaska.Remove(0, m_Hlaska.Length);
                }

                foreach (IPAddress ip in m_CsServery)
                {
                    foreach (StatProtocol protokol in StatProtocol.Protokoly)
                    {
                        UdpClient client = new UdpClient();
                        UdpObjekt obj    = new UdpObjekt(client, ip, odesilatel, protokol);
                        client.Connect(ip, protokol.Port);
                        client.Send(protokol.Dotaz, protokol.Dotaz.Length);

                        try
                        {
                            client.BeginReceive(m_AsCallback, obj);
                            obj.Timerek = new Timer(m_TimerekCallback, obj, 100, Timeout.Infinite);
                        }
                        catch (SocketException /*ex*/)
                        {
                            // Stávající pøipojení bylo vynucenì ukonèeno vzdáleným hostitelem
                            // m_Bot.Gui.VypisRadek("CATCH: " + ex.ToString());

                            ZkontrolujStopku();

                            client.Close();

                            continue;
                        }
                    }
                }

                m_Stopka.WaitOne();

                m_MereniCasu.Stop();

                if (m_Hlaska.Length > 0)
                {
                    m_Hlaska.AppendLine(string.Format("Doba testu: {0} ms Otestováno: {1} IP adres Odesilatel: {2} (pohodlnìjší verze http://www.findcs.wz.cz/ )", (Math.Round((1000.0 * 1000.0 * 1000.0 * m_MereniCasu.ElapsedTicks / Stopwatch.Frequency) / 1000000.0, 3)).ToString(), (m_OtestovanoIP / StatProtocol.Protokoly.Length).ToString(), odesilatel));
                    m_Bot.ChatZprava(m_Hlaska.ToString());
                }
                else
                {
                    m_Hlaska.AppendLine(string.Format("Pøikaz -findcs nenašel žádný bìžící server Odesilatel: {0} (pohodlnìjší verze http://www.findcs.wz.cz/ )", odesilatel));
                    m_Hlaska.AppendLine(string.Format("Doba testu: {0} ms Otestováno: {1} IP adres", (Math.Round((1000.0 * 1000.0 * 1000.0 * m_MereniCasu.ElapsedTicks / Stopwatch.Frequency) / 1000000.0, 3)), (m_OtestovanoIP / StatProtocol.Protokoly.Length).ToString()));
                    m_Bot.ChatZprava(m_Hlaska.ToString());
                }
            }
        }