- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我需要使用 HTTP 协议(protocol)发送文件,但问题是我是否应该使用套接字,因为我有大文件?或者我可以使用 WinHttpApi,例如:
BOOL HttpSendRequest(
__in HINTERNET hRequest,
__in LPCTSTR lpszHeaders,
__in DWORD dwHeadersLength,
__in LPVOID lpOptional,
__in DWORD dwOptionalLength
);
并为我想要的文件使用 lpOptional?我应该划分文件还是该 API 处理大文件?
如果我使用 HTTP api,文件大小是否有任何限制,我应该分配数据吗?
最佳答案
HTTP uses TCP sockets对于它的连接:
HTTP communication usually takes place over TCP/IP connections. The default port is TCP 80 [19], but other ports can be used. This does not preclude HTTP from being implemented on top of any other protocol on the Internet, or on other networks. [...]
(原则上它可以使用其他东西,但这很不寻常。)
与通过套接字设计自己的协议(protocol)相比,使用 HTTP 的优势在于有大量现有的 HTTP 库(以及其他参数)。无论如何,您都必须定义自己的小协议(protocol),即使只是为了告诉远程方文件何时开始和停止。
HTTP 有几点帮助:
Content-Length
header或 chunked transfer encoding .这是必要的,因为你 can't generally distinguish clean and abrupt connection closures in TCP (具有 isConnected
之类功能的 API 是不够的)。如果您确实选择使用 HTTP,请尝试阅读更多有关它的内容。您实际上可能会发现 Web 服务器和 Web 客户端已经实现了您所需要的功能。我不确定 lpOptional
是关于什么的,但是您应该在构建的 URL 中指定要获取的文件。 (在您的服务器上构建您自己的 URL 空间。)
关于c - 使用 winHttpApi 或套接字发送大文件是否明智?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864877/
我有一个包含 1+N 个线程和 N 个 FIFO 队列的程序,例如:FIFO_queue_t* fifo_queque[N]。一个线程负责填充这 N 个 FIFO 队列。并且其他每个线程都与 1 个
我正在使用 Wise Installer Editor 编写 .msi,并且我想将所有文件复制到注册表项中指定的目录中。 我如何在 Wise 中指定这一点? 提前致谢, 埃内斯托 最佳答案 您可以尝试
我们有一个场景,其中我们尝试获取附加的磁盘虚拟机以及分配给这些磁盘的相应总空间。是否有任何命令或脚本可以获取详细信息? 我已使用命令 Get-AzureDisk 获取输出,但它没有显示列表中的所有虚拟
我有一个包含多个派生类的类,每个派生类都有自己的构造函数。 class A { public: static A *create_new_A(int child_ID);
我有一个小问题:) 我计划建立一个相当不寻常的 web 项目,大约有 1000 个页面,其中不会有经典的导航(仅适用于关于页面和联系人),并且所有页面都不会链接到一个又一个。 它的索引 > 打开随机页
我们的应用程序中有一些数据。有时它会被保存,所以我们为它做了一个实体和一个 NSManagedObject 子类。但是,通常情况下,对象将被实例化并且永远不会保存。我正在考虑使用另一个具有 NSInM
假设我有一个表如下: Class | Subject | Student | Marks ---------------------------------------- 1
刚刚在我正在编写的一些代码中偶然发现了这种情况,并且很好奇“正确”的方法是什么。举例来说,我有一大堆对象,我需要按某个属性对其进行分组,但组的顺序很重要。 例如。对象: var obj = {
如何在 Android 应用 Activity 中启用 Mutli 窗口选项? 我尝试在两个单独的 Activity 中使用 AndroidManifest Activity 属性 android:r
我发现 ear 插件覆盖了 war 插件并阻止调用 war 任务。我通过直接调用它来绕过它。 这是远程明智的还是我应该放弃并转向 eclipse 和 gradle 中的多项目设置? ear {
我们的安装程序是用 Inno Setup 编写的,我们实际上对它非常满意。然而,一些客户不断要求他们可以更轻松地通过 Active Directory 分发 MSI 安装程序。通过扩展 Inno Se
我正在尝试使用 Visual Studio 2017 (v15.4.5) 将现有的 WCF Web API(针对 .NET Framework 4.6.1)移植到 ASP.Net Core 2,但在找
我是一名优秀的程序员,十分优秀!