Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 03.07.2013, 17:42   #1
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 24.11.2010
Адрес: москва
Сообщений: 497
Репутация: 114

icq: 444660001
По умолчанию [ping]

вообщем программка получает время приема-передачи до сервера. 10 запросов по 32 байта. реализована через ICMP.
вопрос в следующем... в списке 8 серверов. если запускаю сразу 8 потоков получается что время пинга немного отличается, если про пинговать все сервера по очереди)
может быть из-за загруженности канала? или это косяк в реализации потоков? и каким образом будет правильнее организовать пинг списка серверов?
unbanned вне форума   Ответить с цитированием
Старый 04.07.2013, 14:59   #2
Баламут
Баламучу слегка...
СуперМодератор
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Адрес: Владивосток
Сообщений: 1,524
Репутация: 1011
По умолчанию

А к такому выводу привели серьезные исследования? Нет, я не придираюсь. Правда интересно. Просто ради интереса запустил сейчас тест и в какой-то момент мне тоже так показалось. Но погоняв его подольше что-то разницы не заметил. Особенно в части среднего времени
__________________
http://networkcommander.ru
Баламут на форуме   Ответить с цитированием
Старый 04.07.2013, 16:03   #3
Человек_Борща
Модератор
Заслуженный модератор
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Адрес: Республика Беларусь, г. Минск
Сообщений: 11,452
Репутация: 2688
По умолчанию

Показывайте, как потоки получают список/сервер для пинга.
А вообще не должно влиять на сеть это.

Пакеты маленькие.
Человек_Борща вне форума   Ответить с цитированием
Старый 08.07.2013, 13:27   #4
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 24.11.2010
Адрес: москва
Сообщений: 497
Репутация: 114

icq: 444660001
По умолчанию

2 Баламут, никаких серьезных исследований раз 5 прогнал с потоками, раз 5 по очереди... в итоге пришел к выводу, что если пинговать сервера по очереди, то среднее время получается меньше. вполне возможно показалось... теперь я уже не так уверен.

что касается кода...

сильно не ругаться, я только учусь

ну собственно получается так)
глобально объявлена переменная типа Tstringlist
в нее из текстовика подгружается список серверов.

при создании потока передается номер сервера...

Код:

procedure TForm1.mStartThread(n: integer);
var
  NewThread: TNewThread;
begin
  NewThread := TNewThread.Create(true);
  NewThread.FreeOnTerminate := true;
  NewThread.Priority := tpLower;
  NewThread.serv_no := n;
  NewThread.Resume;
end;

Код:

type
  TNewThread = class(TThread)
  private
    serv_no: integer;
    ping: integer;
    procedure addping;
    procedure getping;
    { Private declarations }
  protected
    procedure Execute; override;
  end;

Код:

procedure TNewThread.Execute;
begin
  inherited;
  getping;
  Synchronize(addping);
end;

Код:

procedure TNewThread.getping;
begin
  ping := Form1.check(PChar(servers.strings[serv_no-1]));
end;


Последний раз редактировалось unbanned; 08.07.2013 в 17:33.
unbanned вне форума   Ответить с цитированием
Старый 08.07.2013, 13:27   #5
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 24.11.2010
Адрес: москва
Сообщений: 497
Репутация: 114

icq: 444660001
По умолчанию

нечаянно продублировал сообщение

Последний раз редактировалось unbanned; 08.07.2013 в 15:41. Причина: дубль. можно удалить
unbanned вне форума   Ответить с цитированием
Старый 08.07.2013, 20:47   #6
Человек_Борща
Модератор
Заслуженный модератор
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Адрес: Республика Беларусь, г. Минск
Сообщений: 11,452
Репутация: 2688
По умолчанию

Мат. часть читать, мигом!
НИКОГДА, вообще НИКОГДА из потока не сунуться в форму если метод не синхронизируется. Отсюда и все ваши тормоза.
Человек_Борща вне форума   Ответить с цитированием
Старый 08.07.2013, 22:23   #7
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 24.11.2010
Адрес: москва
Сообщений: 497
Репутация: 114

icq: 444660001
По умолчанию

дык читал вроде. Насколько я понял синхронизировать надо если что-то изменяется на форме? Например вывод значений пинга в memo. У меня это процедура addping. Синхронизирована check, это просто функция описанная в форме. Грубо говоря она не обращается и не изменяет ни каких компонентов на форме. В этом случае тоже нужна синхронизация?

Последний раз редактировалось unbanned; 08.07.2013 в 22:34.
unbanned вне форума   Ответить с цитированием
Старый 08.07.2013, 22:46   #8
Человек_Борща
Модератор
Заслуженный модератор
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Адрес: Республика Беларусь, г. Минск
Сообщений: 11,452
Репутация: 2688
По умолчанию

Цитата:
В этом случае тоже нужна синхронизация?
Синхронизация нужна в любом случае обращения к форме.
Человек_Борща вне форума   Ответить с цитированием
Старый 09.07.2013, 14:06   #9
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 24.11.2010
Адрес: москва
Сообщений: 497
Репутация: 114

icq: 444660001
По умолчанию

спасибо исправлю. наверное, правильнее будет описать эту процедуру в потоке
unbanned вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ping Шамиль8284 Софт 1 27.05.2013 13:28
Не работает ping Lotles C/C++ Сетевое программирование 1 01.06.2012 20:19
ping на c++ маришка001 Помощь студентам 3 30.10.2011 11:51
ping TaTT DoGG Общие вопросы .NET 2 06.10.2008 12:48
Ping Баламут Работа с сетью в Delphi 5 23.08.2007 15:17


00:58.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru