gpt4 book ai didi

c - 在 C 中通过 TCP 套接字发送视频的最佳方式

转载 作者:可可西里 更新时间:2023-11-01 02:32:05 27 4
gpt4 key购买 nike

我正在考虑通过 TCP 套接字发送视频文件的最佳方式。我已经制作了一个标准的套接字程序,但是在 read 命令之后我不确定如何保存它。

代码示例

//bind server socketfd
if (bind(sfdServer, (struct sockaddr*)&adrServer, ServerAddrLen) < 0)
error("ERROR binding");
listen(sfdServer, 5);
while(1){
printf("Waiting for connections...\n");
sfdClient = accept(sfdServer, (struct sockaddr*)&adrClient, &ClientAddrLen);
if(sfdClient < 0)
error("ERROR accepting");

printf("Connection Established.\n");
//set buffer to zero
bzero(buff, 2048);
printf("Reading from client.\n");
numChar = read(sfdClient, buff, 2048);

//What should go here?

close(sfdClient);
close(sfdServer);

}

我是否可以将缓冲区保存为文件 movie.mp4 或类似的文件?我意识到我可能需要更改我的缓冲区大小或可能以 block 的形式发送它。但我找不到任何关于执行此操作的最佳方法的好信息。任何帮助或正确方向的观点将不胜感激!

最佳答案

您会将缓冲区 block 写入文件。

首先,打开一个输出文件进行写入:

   #include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


int outfd;
outfd = open("movie.mp4", O_WRONLY|);

然后,在 read() 之后,写入您的字节:

   numWrite = write(outfd, buff, numChar);

请注意,您将需要处理许多分 block /缓冲情况,例如:

  • read()write() 返回零或 -1(错误)
  • 读取直到没有更多字节可用。现在,您的代码仅读取 2048 个字节,然后关闭套接字。
  • write() 写入的字节数少于请求的字节数(这可能发生在网络文件系统上)

关于c - 在 C 中通过 TCP 套接字发送视频的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4847025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com