Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ClientSocket&ServerSocket [D6, D7, Win2k, WinXP]


Страницы:   1 2

maxim161 ©   (2006-01-30 08:06:00) 

Почему при посылке string с ClientSocket на ServerSocket (и наоборот) на несколько компьютеров, т.е., например с 1 ПК на 2, с 1 на 3...и т. д., между ПК, требуется интервал (задержка) времени? Может быть есть компонент, который может за долю секунды отправить string сразу на несколько компьютеров?


Digitman   (2006-02-13 16:18:00) [21]


> Верно, не могу же я менять Hostname при активном сокете.


А ЭТО-то здесь причем ?!


maxim161   (2006-02-13 16:03:00) [22]


> Кто его знает, может под "задержкой" на самом деле подразумевается
> время установления коннекта + время дисконнекта.

Верно, не могу же я менять Hostname при активном сокете.


Digitman   (2006-02-13 08:24:00) [23]


> как-то ковырять ~16000 строк в исходнике не сильно бы хотелось


Не надо ничего "ковырять".
Вызывай SetSockOpt() в своем обработчике OnConnect.


> atruhin ©   (12.02.06 18:16) [8]


Да тут может и Nagle ни при чем.
Я просто сделал предположение.
Но без авторского кода ничего более определенного сказать невозможно.
Кто его знает, может под "задержкой" на самом деле подразумевается время установления коннекта + время дисконнекта.


atruhin   (2006-02-12 18:16:00) [24]

>> [1] Digitman ©   (30.01.06 08:34)
>> Потому что по умолчанию включен алгоритм Нагла.
Я почему то думал, что накопление пакетов действует только для последовательных мелких пакетов данных, для конкретного сокета.
Если он подключается сразу к нескольким, то какая тут задержка?
Даже если он делает подключения последовательно т.е. подключение, отправка, отключение, не должно быть задержки.
В чем я не прав? Поясни пожалуйста.


maxim161   (2006-02-12 17:24:00) [25]

Вот отключить метод Нагла мне бы хотелось, а вот компонент менять... как-то ковырять ~16000 строк в исходнике не сильно бы хотелось.


maxim161   (2006-02-12 09:10:00) [26]


> В WinsockAPI смотри ф-цию SetSockOpt() и опцию TCP_NODELAY.


А попоподробнее можно?


Digitman   (2006-02-03 08:27:00) [27]


> Ну а исходный код можно?


Ну а почитать для начала справку к ф-ции ? Самостоятельно ?


maxim161   (2006-02-03 06:19:00) [28]

Ну а исходный код можно? ;)


Digitman   (2006-02-02 08:32:00) [29]


> странно, на них стоит программа-сервер


Что ж тут странного ?


> успеть отправить стринг примерно за секунду


Еще раз - отключи алгоритм Нагла, если он по умолчанию включен.

В WinsockAPI смотри ф-цию SetSockOpt() и опцию TCP_NODELAY.

Вот цитата из станд.справки :

The TCP_NODELAY option is specific to TCP/IP service providers. Enabling the TCP_NODELAY option disables the TCP Nagle Algorithm (and vice versa). The Nagle algorithm (described in RFC 896) is very effective in reducing the number of small packets sent by a host by essentially buffering send data if there is unacknowledged data already "in flight" or until a full-size packet can be sent. It is highly recommended that TCP/IP service providers enable the Nagle Algorithm by default, and for the vast majority of application protocols the Nagle Algorithm can deliver significant performance enhancements. However, for some applications this algorithm can impede performance, and TCP_NODELAY can be used to turn it off. These are applications where many small messages are sent, which need to be received by the peer with the time delays between the messages maintained. Application writers should not set TCP_NODELAY unless the impact of doing so is well-understood and desired, since setting TCP_NODELAY can have a significant negative impact of network and application performance.

Певый параметр ф-ции - хэндл гнезда, который в случае успешного коннекта ClientSocket'а с сервером можно получить прямо в обработчике события OnConnect чтением св-ва Socket.SocketHandle.

См. также TIdIOHandlerSocket.UseNagle для Indy-компонентов.


maxim161   (2006-02-01 17:50:00) [30]

Возникает другой вопрос: Вот, например, у меня 10 компутеров и, что странно, на них стоит программа-сервер, а мой клиент должен подцепиться к каждому из них и успеть отправить стринг примерно за секунду. Вопрос следующий: Как? ishodnik, please...  ;|


Digitman   (2006-01-30 08:34:00) [31]


> Почему при посылке .. между ПК, требуется интервал
> (задержка) времени?


Потому что по умолчанию включен алгоритм Нагла.


> есть компонент, который может за долю секунды отправить
> string сразу на несколько компьютеров?


Компоненты IdTCPClient/Server имеют св-во, управляющее включением/отключением nagle algorythm.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо