Как на Php можно осуществить прием данных через интернет?
Вопрос вызван необходимостью организации приема потока данных заране неизвестного размера от удаленного клиента через сеть со стороны сервера по протоколу HTTP. К примеру, как принять текстовый файл по порциям? Подходят ли для этого сокеты? Но вот как при этом можно учесть таймауты и обрывы связи и гарантировать получение файла?
Как-то так в сыром виде:
<?
$=fsockopen( $client_addr, 80);
fputs($s, "GET / HTTP/1.0\n\n");
while (!feof($s)) echo fgets($,200);
fclose($s);
?>
Спасибо заранее за любую активность!
Цитата:
Originally posted by TVC
Приветствую всех!
Вопрос вызван необходимостью организации приема потока данных заране неизвестного размера от удаленного клиента через сеть со стороны сервера по протоколу HTTP. К примеру, как принять текстовый файл по порциям? Подходят ли для этого сокеты? Но вот как при этом можно учесть таймауты и обрывы связи и гарантировать получение файла?
Как-то так в сыром виде:
<?
$=fsockopen( $client_addr, 80);
fputs($s, "GET / HTTP/1.0\n\n");
while (!feof($s)) echo fgets($,200);
fclose($s);
?>
Спасибо заранее за любую активность!
Приветствую всех!
Вопрос вызван необходимостью организации приема потока данных заране неизвестного размера от удаленного клиента через сеть со стороны сервера по протоколу HTTP. К примеру, как принять текстовый файл по порциям? Подходят ли для этого сокеты? Но вот как при этом можно учесть таймауты и обрывы связи и гарантировать получение файла?
Как-то так в сыром виде:
<?
$=fsockopen( $client_addr, 80);
fputs($s, "GET / HTTP/1.0\n\n");
while (!feof($s)) echo fgets($,200);
fclose($s);
?>
Спасибо заранее за любую активность!
гарантировать целостность файла можно только на прикладном уровне. т. е. - посылать перед посылкой файла его размер, считать контрольные суммы и т. п.
Спасибо за ответ!:) А может ли сервер не знать размер файла изначально, а получить его в массиве $_GET, за формирование которого отвечает приложение на клиенте, а после осуществления передачи, определить размер полученного файла и сопоставить с тем размером, который пришел заранее в массиве $_GET?
Цитата:
Originally posted by TVC
Спасибо за ответ!:) А может ли сервер не знать размер файла изначально, а получить его в массиве $_GET, за формирование которого отвечает приложение на клиенте, а после осуществления передачи, определить размер полученного файла и сопоставить с тем размером, который пришел заранее в массиве $_GET?
Спасибо за ответ!:) А может ли сервер не знать размер файла изначально, а получить его в массиве $_GET, за формирование которого отвечает приложение на клиенте, а после осуществления передачи, определить размер полученного файла и сопоставить с тем размером, который пришел заранее в массиве $_GET?
Это я не скажу. не разработчик. одно замечание - а почему нужен именно HTTP протокол?
На самом деле он просто у меня в книге описан, а так - полная свобода!:)
Цитата:
Originally posted by TVC
Спасибо за ответ!:) А может ли сервер не знать размер файла изначально, а получить его в массиве $_GET, за формирование которого отвечает приложение на клиенте, а после осуществления передачи, определить размер полученного файла и сопоставить с тем размером, который пришел заранее в массиве $_GET?
Спасибо за ответ!:) А может ли сервер не знать размер файла изначально, а получить его в массиве $_GET, за формирование которого отвечает приложение на клиенте, а после осуществления передачи, определить размер полученного файла и сопоставить с тем размером, который пришел заранее в массиве $_GET?
Только не через GET, а через POST (имхо так удобней). Тупо создаёшь массив (как уже сам и сказал и передаёшь), за ним сам файл. Если хочешь немного покапаться в этом, тто возьми любой скрипт для закачки и посмотри на его устройство. 99% вопросов сразу отпадёт.
Цитата:
Originally posted by shaelf
Только не через GET, а через POST (имхо так удобней). Тупо создаёшь массив (как уже сам и сказал и передаёшь), за ним сам файл. Если хочешь немного покапаться в этом, тто возьми любой скрипт для закачки и посмотри на его устройство. 99% вопросов сразу отпадёт.
Только не через GET, а через POST (имхо так удобней). Тупо создаёшь массив (как уже сам и сказал и передаёшь), за ним сам файл. Если хочешь немного покапаться в этом, тто возьми любой скрипт для закачки и посмотри на его устройство. 99% вопросов сразу отпадёт.
Понятно, посмотрю. Спасибо!