繁体   English   中英

如何在C中通过TCP套接字通过HTTP发送文件?

[英]How do you send a file via HTTP over tcp sockets in C?

我正在用C(在Linux上)实现客户端和服务器,我想使用HTTP PUT消息从客户端向服务器发送文本文件。

我不太确定该怎么做。 我是否首先通过套接字发送HTTP请求和标头行,然后使用缓冲区逐个通过套接字发送文件? 还是在发送文本文件之前,需要在文本文件的每个部分之前添加自己的HTTP请求和标题行?

我还阅读了有关名为sendfile的函数的信息,该函数看起来似乎会使它更容易,但是我不确定如果sendfile只是将文件直接发送到套接字,我该如何在该文件的前面加上HTTP标头和请求行。

谢谢您的帮助。

我是否首先通过套接字发送HTTP请求和标头行,然后使用缓冲区逐个通过套接字发送文件?

是。

还是在发送文本文件之前,需要在文本文件的每个部分之前添加自己的HTTP请求和标题行?

没有。

我还阅读了有关名为sendfile的函数的信息,该函数看起来似乎会使它更容易,但是我不确定如果sendfile只是将文件直接发送到套接字,我该如何在该文件的前面加上HTTP标头和请求行。

先用正常发送头send ,然后调用sendfile 但是,您应该阅读说明文件

请注意,成功调用sendfile()可能会写入少于请求的字节数。 如果有未发送的字节,则呼叫者应准备重试呼叫。

这意味着sendfile使您的生活变得不那么轻松。 它比的组合更有效的readwrite ,但工作的程序员需要做的量是在两种情况下类似。

如果要实现HTTP传输协议,请检查此RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.2

否则,如果您想要自己的简单方法,则可以实现一个API,例如DWORD(cmdPut)+filename+'\\0'+DWORD(fileLen)+fileBinaryData.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM