我正在尝试在 Linux 下用 C 语言编写代理服务器。在我尝试将它用于流媒体之前,它运行良好(我认为它运行良好)。
让我先说问题,然后我会跳到流媒体上。要从网站读取传入数据并将其转发给实际客户端,我会这样做
count = read(websitefd,buffer,BUFSIZ);
write(clientfd,buffer,count);`
在一个连续的 while 循环中,直到我读取了该套接字上的所有数据。
现在的问题是,如果实际网站发送内容长度字段为 1025 字节的 HTTP 数据包和其他数据包中的其他部分数据,那么我仍然总是等待 BUFSIZ(8192 字节),然后我将 8192 字节一起发送到客户端机器. 正常情况octet-stream
下,即使我知道它不是正确的方法,它也可以正常工作,因为我应该转发与实际服务器相同的数据包。因此,如果实际服务器向我发送 2 个大小为 1024 和 1024 字节的数据包,我会向客户端发送一个 2048 字节的数据包,第一个数据包的 HTTP 标头说内容长度为 900 字节(假设全部是 HTTP 标头)但实际上我将一个 2048 字节的数据包转发给客户端。对于内容类型:application/octet-stream 它只是下载整个内容并将其显示为图像或 html 文本或要求我保存它。
当客户端请求流媒体时,由于上述原因客户端无法播放视频。那我现在该怎么办?感谢您阅读我的问题。请帮帮我。:)