iphone / mac - как отправить видео файл с сокетом? - PullRequest
1 голос
/ 16 февраля 2010

Моя программа (приложение для 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


...