Форум: "Сети";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];
ВнизReceive bytes (Winsock) Найти похожие ветки
← →
Sr_pr (2003-02-16 02:00) [0]Скажите пожалуйста, как можно принять файл (даже не файл, а просто последовательность байтов с произвольного компьютера), если размер принимаемого заранее неизвестен. Ведь, я думаю, нет необходимости делать для этого один буфер приёма мегабайт этак на 100 (или даже больше) и потом анализировать его содержимое.
И ещё: как можно сделать приём асинхронным (в смысле, чтобы программа не подвисала в момент приёма), не используя компоненты типа TClientSocket, а пользуясь просто Winsock API?
← →
Digitman (2003-02-16 12:58) [1]
> если размер принимаемого заранее неизвестен
что мешает передатчику инф.сообщения непосредственно перед посылкой самого сообщения послать приемнику, скажем, DWORD, содержащий полный размер следом посылаемого сообщения ? Получив этот DWORD, приемник будет знать , сколько байт следом следует принять (в один или несколько приемов) для того, чтобы целостность инф.сообщения была достоверна.
> как можно сделать приём асинхронным (в смысле, чтобы программа
> не подвисала в момент приёма), не используя компоненты типа
> TClientSocket, а пользуясь просто Winsock API?
Точно так же, как это делает сам TClientSocket в режиме ctNonBlocking. Исходный код же открыт ! Изучи его и сделай свой вариант по образу и подобию.
← →
Anatoly Podgoretsky (2003-02-16 13:05) [2]Если нельзя передать размер, то передать стоповую последовательность байт, если и это нельзя, то по таймауту.
← →
Sr_pr (2003-02-16 21:09) [3]Спасибо!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.007 c