![]() |
Произвольные данные через TCPSend() / TCPRecv()
как с помощью TCPSend/Recv передать файл, а не только текст?
или передать файл как текст, а на входе преобразовать обратно.. такое возможно? |
Intexid, передавать и принимать бинарные данные. чтобы передать
Код:
$hRead = FileOpen($sFile, 16); Флаг 16 - бинарное чтение файла Прием Код:
TCPRecv($socket, $nData, 1); флаг 1 - Прием бинарных данных кусками по $nData |
kaster,
Все работает!!! :yahoo: а я то думал, это будет целая проблема.. пока только по частям передавать не получается, т.е. файл только целиком. при указании $nData в файл пишет только первый кусок, хотя на стороне клиента цикл вроде продолжается.. в связи с этим вопрос: существует ли ограничение на размер данных, отданный одним куском? с какими флагами на стороне сервера принимать?: FileOpen(), FileWrite() |
Intexid, чесгря я знаком исключительно с концепцией реализации, которую сам написал постом выше. "своими руками" не пробовал. но мне кажется проблем быть не должно. в справке ограничения как таковой нет, но целесообразней и надежней (ИМХО) передавать все же небольшими кусками, особенно если файл большой. на стороне сервера (понял исключительно из контекста где сервер а где клиент) принимать надо по TCPRecv, если я правильно тебя понял. Чтобы записать нужно предварительно открывать файл на запись в бинарном режиме
Код:
$hWrite = FileOpen($sPath, 2 + 16) скинь свой код, так будет понятнее, что уже сделано а что пропущено или надо дополнить |
kaster,
Если по частям записывать, то нужно не Код:
$hWrite = FileOpen($sPath, 2 + 16) Код:
$hWrite = FileOpen($sPath, 1 + 16) |
madmasles, нет. не обязательно. просто не надо хендл закрывать после записи. то что ты говоришь, это дописывание в файл после очередного открытия
|
kaster,
Специально проверил. Я был не прав. Хотя, работает и так и так. |
Время: 20:42. |
Время: 20:42.
© OSzone.net 2001-