Моя программа (приложение для iphone) состоит из 2 частей - сокета сервера (расположен на порту 3490), работающего в другом потоке, и клиента для тестирования сервера. На сервере есть видеофайл, и я хочу отправить его клиенту по запросу. Это я делаю так:
int fileDesc = open([viewController.filePath UTF8String], O_RDONLY);
if (fileDesc == -1) {
fprintf(stderr, "unable to open '%s': %s\n", [viewController.filePath UTF8String], strerror(errno));
exit(1);
}
off_t offset = 0;
off_t len = 0;
struct sf_hdtr headers;
headers.headers = NULL;
headers.trailers = NULL;
if (sendfile (fileDesc, new_fd, offset, &len, NULL, 0) == -1){
perror("send");
}
Теперь мой клиент называет это так:
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://127.0.0.1:3490/"]];
[moviePlayer play];
Теперь прибывает странная часть. В симуляторе он не воспроизводится должным образом (я слышу только аудио - нет видео), а на устройстве он вообще не работает. Это также говорит:
MPMoviePlayerController может не поддерживать файл типа ''
Тогда я решил провести расследование и попытался использовать NSURLConnection для загрузки файла. В методе didReceiveResponse я получаю, что [response ОжидаемыйContentLength] равен -1, а [ответ предложил имя файла] 127.0.0.1.dms
Кстати, я пытался отобразить PDF с этого сервера с помощью этого метода в UIWebView, и это сработало.
Спасибо
Alex