Разумно ли отправлять большие файлы, используя winHttpApi или сокеты? - PullRequest
1 голос
/ 14 января 2012

Мне нужно отправлять файлы по протоколам HTTP, но вопрос в том, стоит ли мне использовать сокеты, потому что у меня большие файлы? или я могу использовать WinHttpApi, например:

BOOL HttpSendRequest(
  __in  HINTERNET hRequest,
  __in  LPCTSTR lpszHeaders,
  __in  DWORD dwHeadersLength,
  __in  LPVOID lpOptional,
  __in  DWORD dwOptionalLength
);

и использовать lpOptional для файла, который я хочу? и я должен разделить файл или этот API обрабатывает большие файлы?

Существуют ли какие-либо ограничения в размере файлов, если я использую HTTP-API и мне следует разделять данные?

Ответы [ 2 ]

2 голосов
/ 15 января 2012

HTTP использует TCP-сокеты для подключения:

HTTP-связь обычно происходит через TCP / IP-соединения. порт по умолчанию - TCP 80 [19], но можно использовать и другие порты. Это делает не препятствует реализации HTTP поверх любого другого протокола в Интернете или в других сетях. [...]

(В принципе можно было бы использовать что-то еще, но это было бы довольно необычно.)

Преимущество использования HTTP по сравнению с разработкой собственного протокола через сокет состоит в том, что существует множество существующих библиотек HTTP (среди прочих аргументов). В любом случае вам придется определить свой собственный маленький протокол, если только сообщить удаленной стороне, когда файл запускается и останавливается.

Несколько моментов, с которыми HTTP помогает:

Если вы решите использовать HTTP, попробуйте прочитать об этом немного больше. Вы можете обнаружить, что веб-серверы и веб-клиенты уже реализуют то, что вам нужно. Я не уверен, что такое lpOptional, но вы должны указать файл, который хотите получить, в URL-адресе, который вы создаете. (Создайте свое собственное пространство URL на вашем сервере.)

1 голос
/ 14 января 2012

HTTP - это просто протокол более высокого уровня поверх сокетов.Таким образом, любая проблема с сокетами будет связана и с HTTP.

Насколько большими являются файлы, о которых вы думаете?Практически любые ограничения будут связаны не с выбором API, а с такими ограничениями, как пропускная способность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...