使用winHttpApi或套接字发送大文件是明智的吗?

时间:2012-01-14 19:46:56

标签: c windows api http networking

我需要使用HTTP协议发送文件,但问题是我应该使用套接字,因为我有大文件?或者我可以使用WinHttpApi,例如:

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

并将lpOptional用于我想要的文件?我应该分配文件还是这个API处理大文件?

如果我使用HTTP apis,文件大小是否有任何限制,我应该分配数据吗?

2 个答案:

答案 0 :(得分:2)

HTTP uses TCP sockets用于连接:

  

HTTP通信通常通过TCP / IP连接进行。该   默认端口是TCP 80 [19],但可以使用其他端口。这样做   不排除在任何其他协议之上实现HTTP   在互联网上或其他网络上。 [...]

(它原则上可以使用别的东西,但这很不寻常。)

使用HTTP而不是在套接字上设计自己的协议的优点是有大量现有的HTTP库(以及其他参数)。无论如何,你必须定义自己的小协议,如果只是在文件启动和停止时告诉远程方。

HTTP帮助的几点:

如果您确实选择使用HTTP,请尝试阅读更多相关内容。您实际上可能会发现Web服务器和Web客户端已经实现了您所需的功能。我不确定lpOptional是什么,但您应该在您构建的URL中指定要获取的文件。 (在服务器上构建自己的URL空间。)

答案 1 :(得分:1)

HTTP只是套接字之上的更高层协议。因此,套接字的任何问题都将面临HTTP。

您正在考虑的文件有多大?几乎所有限制都不是由于您选择的API,而是带宽等限制因素。