IPB

Здравствуйте, гость ( Вход | Регистрация )

Новая версия патчера | 1.9.1.5
Vedmed
сообщение 7.1.2009, 20:36
Сообщение #1


Активный участник
***

Группа: Пользователи
Сообщений: 89
Регистрация: 28.12.2008
Пользователь №: 77



Исправил вроде досадную ошибку с двойным отображением основного трекера.
Проверяйте внимательно - основной трекер теряться не должен (но на определенных клиентах наверно может - стандарт для каждого "свой").

1.9.1.5
Перейти в начало страницы
 
+Цитировать сообщение
 
Начать новую тему
Ответов
Vedmed
сообщение 9.1.2009, 0:58
Сообщение #2


Активный участник
***

Группа: Пользователи
Сообщений: 89
Регистрация: 28.12.2008
Пользователь №: 77



Так, сегодня несколько часов мучал потоки - то, с какой скоростью он проверяет в тестовом проекте было совершенно неприемлемо - невероятно медленно. 2110 секунд (35 минут). mega_shok.gif

Если кто-то знает лучше, или может предложить иной метод, нежели этот - вэлкам...
Текущая функция
Код
            /// <summary>
            /// Checks connection to current server and port
            /// </summary>
            /// <param name="server">server to connect</param>
            /// <param name="port">port to connect</param>
            /// <returns>connection success or not</returns>
            private void CheckConnection()
            {
                if (!_http)
                {
                    IPHostEntry hostEntry = null;
                    _result = false;
                    try
                    {
                        // Get host related information.
                        hostEntry = Dns.GetHostEntry(_server);

                        // Loop through the AddressList to obtain the supported AddressFamily. This is to avoid
                        // an exception that occurs when the host IP Address is not compatible with the address family
                        // (typical in the IPv6 case).
                        foreach (IPAddress address in hostEntry.AddressList)
                        {
                            IPEndPoint ipe = new IPEndPoint(address, _port);
                            Socket tempSocket =
                                new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

                            tempSocket.Connect(ipe);

                            if (tempSocket.Connected)
                            {
                                _result = true;
                                tempSocket.Close();
                            }
                        }
                    }
                    catch
                    {
                        _result = false;
                    }
                }
                else
                {
                    try
                    {
                        HttpWebRequest reqFP = (HttpWebRequest)HttpWebRequest.Create(_server);

                        HttpWebResponse rspFP = (HttpWebResponse)reqFP.GetResponse();
                        if (HttpStatusCode.OK == rspFP.StatusCode)
                        {
                            // HTTP = 200 - Internet connection available, server online
                            rspFP.Close();
                            _result = true;
                        }
                        else
                        {
                            // Other status - Server or connection not available
                            rspFP.Close();
                            _result = false;
                        }
                    }
                    catch (WebException)
                    {
                        // Exception - connection not available
                        _result = false;
                    }
                }
            }

        }

Итого:
-удалось рассинхронизировать проверку ретрекеров - полный список Москвы (87 хостов) он теперь проверяет за 78 сек. (вот такой каламбурчик - от машины не зависит, от коннекта тоже - ест в пике 2Кб/с, вся проблема именно в ожидании ответа - ждет ответа он "до упора").
-не удалось запихнуть весь пул потоков в отдельный поток - посему все это происходит "на глазах изумленных пользователей".
-варианты с сервисами/отдельными процессами даже не рассматривались - это патчер - он должен быть маленьким и не надоедливым.
-ретрекеры плохо проверяются по ответу http.
-адрес должен в обязательном порядке содеражть порт.


PS Так как мы еще не закончили ворошить список ретрекеров из старого в новый - просьба всем внимательно на него смотреть. Это "очень тестовая" версия.
1.9.1.6
Перейти в начало страницы
 
+Цитировать сообщение

Сообщений в этой теме
- Vedmed   Новая версия патчера | 1.9.1.5   7.1.2009, 20:36
- - Ostr   Ну теперь осталось добавить авто-тестер доступных ...   7.1.2009, 23:45
- - Shift   лепани тут или в TODO тему   7.1.2009, 23:46
- - Ostr   в приложении код. по любым вопросам - в лучше в ас...   8.1.2009, 11:18
|- - Vedmed   Цитата(Ostr @ 8.1.2009, 10:18) в приложен...   8.1.2009, 14:54
- - Shift   так пусть остануться имена надо б обучить его чтоб...   8.1.2009, 15:24
|- - Vedmed   Цитата(Shift @ 8.1.2009, 14:24) так пусть...   8.1.2009, 15:30
- - Shift   Согласен , но тогда надо чтоб он проверял раз в де...   8.1.2009, 15:32
- - Ostr   1) одну функцию не интересно ) 2) разделение на го...   8.1.2009, 22:04
- - Shift   да нет тестировать надо все а не только новые так ...   8.1.2009, 22:05
- - Ostr   пиринг гуляет не каждый день сделать тест раз в н...   8.1.2009, 22:17
- - cnh   Объявили о ретрекере в СВАО - Алексеевский. Появил...   9.1.2009, 0:02
- - Shift   а выход в интернет патчеру разрешен ? он при перво...   9.1.2009, 0:11
|- - cnh   Цитата(Shift @ 8.1.2009, 23:11) а выход в...   9.1.2009, 0:15
- - aspeed08   При попытке пропатчить приватный торрент-файл с ге...   9.1.2009, 0:21
|- - Vedmed   Цитата(aspeed08 @ 8.1.2009, 23:21) При по...   9.1.2009, 1:00
- - Shift   попробуй любую магнет ссылку запустить и посмотри ...   9.1.2009, 0:40
- - Vedmed   Так, сегодня несколько часов мучал потоки - то, с ...   9.1.2009, 0:58
|- - FreeM@N   Цитата(Vedmed @ 9.1.2009, 0:58) Так, сего...   9.1.2009, 7:01
- - aspeed08   Цитата(Shift @ 8.1.2009, 23:40) попробуй ...   9.1.2009, 1:31
|- - Vedmed   Цитата(aspeed08 @ 9.1.2009, 0:31) Вот, на...   9.1.2009, 1:51
- - Ostr   сокеты уже используются, вот таймаут изменить это ...   9.1.2009, 11:01
- - aspeed08   Цитата(Vedmed @ 9.1.2009, 0:51) utorrent....   9.1.2009, 11:08
- - Vedmed   Цитата(FreeM@N @ 9.1.2009, 6:01) А выстав...   9.1.2009, 13:21
- - FreeM@N   ну по поводу порта можно так сделать: выцепляешь е...   9.1.2009, 16:26
- - Shift   443 имелось ввиду ели https - SSL хотя XBT SSL вро...   9.1.2009, 16:29
- - Ostr   код патчера можно еще раз увидеть?)   9.1.2009, 22:25
|- - Vedmed   Цитата(Ostr @ 9.1.2009, 21:25) код патчер...   9.1.2009, 22:30
- - Ostr   рефакторинг наше все - собстно им и хотел бы занят...   9.1.2009, 22:45


Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 23.5.2024, 18:49
Top.Mail.Ru