Samotek
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Подскажите, пожалуйста: TIdTCPClient и TIdTCPServer (Indy 10, Delphi 2007) - передача данных, никаких дополнительных настроек, только Host и Port Привожу два варианта передачи, отличающиеся только приведенными ниже строками(размер данных тот-же одинаков) Вариант первый Клиент: Client.IOHandler.WriteLn(CmdStr); Сервер: str := AContext.Connection.IOHandler.ReadLn(); В этом варианте все хорошо и, когда оба на одной машине и, когда на разных и скорость передачи примерно одна и та-же Вариант второй: Клиент: Client.IOHandler.Write(integer(Length(CmdStr))); Client.IOHandler.Write(CmdStr); Сервер: Len := AContext.Connection.IOHandler.ReadInteger; s := AContext.Connection.IOHandler.ReadString(Len); Во втором варианте, если оба на одной машине, то скорость сопоставима с первым, а вот, если на разных машинах, скорость падает пости в 100 раз Обе машины в локальной сети. Подскажите, в чем может быть дело? Добавлено: Отвечаю сам себе, может кому пригодится. Помогло Клиент: Client.IOHandler.WriteBufferOpen; try Client.IOHandler.Write( Intteger(Length(CmdStr))); Client.IOHandler.Write(CmdStr); finally Client.IOHandler.WriteBufferClose; end; |