Форум: "Сети";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизБольшая задержка... Найти похожие ветки
← →
able © (2004-11-01 19:16) [0]Здравствуйте, Мастера!
Делаю чат, использую компоненты TServerSocket & TClientSocket.
Когда приходит сообщение на сервер пересылаю его на всех
клиентов:
for a:=0 to connum-1 do
form1.ServerSocket1.Socket.Connections[a].SendText(msg);
"Connum" при подключении connum:=connum+1;
А когда ClientDisconnect connum:=connum-1;
Всё бы хорошо, но сообщения отсылаются с задержкой 5-6, а то
и все 10 секунд, а для чата это не приемлимо.
Скажите, из-за чего может это быть? Сетка 100мб, не загружена.
Может можно сделать как-нибудь подругому?
← →
SkyNet (2004-11-01 19:41) [1]естественно по другому....
рекомендую протокол UDP
неплохие компоненты Indy idUDPServer
idUDPClient...
просто пойми то что чат должен постоянно принимать и посылать множество данных... TCP протокол для чата конечно хорош....но не для широковещательной разсылки... а для передачи данных точка-точка... хотя и UDP справляется с этим неплохо.... и намного быстрее!!!! без задержек на установку связи проверку каждого пакета на факт доставки дисконект и тд...
← →
Piter © (2004-11-01 20:33) [2]SkyNet (01.11.04 19:41) [1]
естественно по другому....
рекомендую протокол UDP
ничего естественного. Хороший чат должен работать с выделенным сервером. По TCP/IP естественно. Как например, mIRC.
able © (01.11.04 19:16)
мне кажется странным то, что ты говоришь. Что-то ты утаиваешь, наверняка есть какой-то код, который тормозит.
Чтобы увериться, что это не глюк - напиши тестовое приложение. Сервер, который тупо принимает подключения и клиент, который тупо подключается.
Потом при нажатии на батон выполни приведенный тобой код - должен исполниться очень быстро.
Плюс хочу заметить, что зачем ты используешь глобальную переменную connum? Ведь число подключенных пользователей можно узнать и так, через свойство TServerSocket
← →
Digitman © (2004-11-02 09:35) [3]
> able © (01.11.04 19:16)
возможно, причиной ситуации с задержкой является буферизация пересылаемых сообщений на передающей стороне .. алгоритм Нагля, реализующий буферизацию, по умолчанию задействован после создания гнезда, но его можно отключить при необходимости
включение/отключение алгоритма Нагля осуществляется вызовом WinsockAPI-функции SetSockOpt(), управляющей различными опциями гнезда, в т.ч. опцией TCP_NODELAY, имеющей непосред.отношение к использованию этого алгоритма
при вызове ф-ции SetSockOpt в ее параметрах необходимо указать
- хэндл гнезда, опция которого изменяется (см. TCustomWinSocket.SocketHandle)
- собственно константу, определяющую конкретную опцию (TCP_NODELAY)
- адрес dword-переменной, значение которой определяет вновь устанавливаемое значение опции (1/0 - отключить/включить алгоритм Нагля)
← →
able © (2004-11-02 20:35) [4]Запустил сервак на буке (Cel-1.7ghz) - всё нормально.
Значит, дело не в сети, хотя, может там и отключен алгоритм Нагля. У меня p-2 330 ghz...
Впрочем, я ещё забыл, что идёт "шифрование" всей переходящей инфы:
procedure Code(var text: string; password: string;
decode: boolean);
var
i, PasswordLength: integer;
sign: shortint;
begin
PasswordLength := length(password);
if PasswordLength = 0 then Exit;
if decode
then sign := -1
else sign := 1;
for i := 1 to Length(text) do
text[i] := chr(ord(text[i]) + sign *
ord(password[i mod PasswordLength + 1]));
end;
По слову "simple"..
← →
Verg © (2004-11-02 21:06) [5]Все равно непонятно. Нет там никаких задержек. В таких условиях и быть не может. Тем более измеряемых в единицах секунд (бедный Нагл тут асолютно не при чем).
При чем тут задержки? Задержки между чем и чем? И почему поиск этой "задержки" акцентирован на передающей стороне?
← →
able © (2004-11-03 07:26) [6]Verg © (02.11.04 21:06) [5]
Вот и мне непонятно. То, что задержка идёт не из-за шифрования это точно, т.к. можно хоть 10 клиентов подключить с локального компа на локальный сервер... а вот когда подключается кто-то из сети. И если запустить сервер на другом компьютере всё нормально.. Хотя винду вчера только на своём поставил..
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c