Форум: "Сети";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];
ВнизОткуда ReceiveLength берет длину ? Найти похожие ветки
← →
karbo (2002-08-05 01:41) [0]Откуда ReceiveLength берет число с размером передаваемого пакета данных ?
Предполагаю, что это первые 4 байта этих данных.
Тогда вопрос в другом - при отправке с помощью TClientWinSocket.SendBuf эти 4 байта будут вставлены автоматически или их надо вставлять вручную ?
Иначе - какая из процедур ниже правильно отправит, к примеру, три байта 77 77 77
procedure ONE;
const A : array [1..3] of byte= (77,77,77);
begin ClientSocket1.Socket.SendBuf( A ,3 ) end;
или
procedure TWO;
const A : array [1..7] of byte= (3,0,0,0, 77,77,77);
begin ClientSocket1.Socket.SendBuf( A ,8 ) end;
или
procedure TRI;
const A : array [1..7] of byte= (7,0,0,0, 77,77,77);
begin ClientSocket1.Socket.SendBuf( A ,8 ) end;
← →
Digitman (2002-08-05 08:15) [1]ReceiveLength() ничего не знает о логической структуре транспортируемых данных - ты должен самостоятельно заботиться о предварительном приеме/передаче префиксов, отражающих размер тех или иных данных, следующих за префиксом.
Единственная "правильная" процедура - первая.
Две других могут привести к AV из-за несоответствия размера массива размеру передаваемого пакета
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.01 c