gpt4 book ai didi

sockets - 使用 TCP 发送大文件

转载 作者:可可西里 更新时间:2023-11-01 02:53:48 24 4
gpt4 key购买 nike

我的客户端程序需要向服务器程序发送一个大文件。在客户端连接到服务器并且服务器接受它之后,客户端指定它将要发送的文件的名称。现在,客户端需要使用 TCP 发送文件。

我知道如果文件的大小很小(小于 1k 字节?),我可以使用对套接字编程中的“发送”函数的一次调用直接发送它。但是,如果我的文件很大,比如大约 100 MB,是否同样有效?我想知道“发送”本身是否处理将大数据分成数据包并可靠地发送它们的任务,还是应该由我来处理?

谢谢。

最佳答案

我正在尝试类似的东西 & 我的客户端代码如下所示

static void send_file(char *ipAddress, char *filename)
{
struct sockaddr_in serverAddr;
int skt;
uint32_t addr_size;
uint32_t sz;
int32_t sent_bytes;
FILE *fp;

if ( inet_pton(AF_INET, ipAddress, &(serverAddr.sin_addr)) ){
skt = socket(PF_INET, SOCK_STREAM, 0);
serverAddr.sin_family = AF_INET;
}
else {
inet_pton(AF_INET6, ipAddress, &(serverAddr.sin_addr));
skt = socket(PF_INET6, SOCK_STREAM, 0);
serverAddr.sin_family = AF_INET6;
}

serverAddr.sin_port = htons(7891);

memset(serverAddr.sin_zero, '\0', sizeof(serverAddr.sin_zero));

addr_size = sizeof(serverAddr);
connect(skt, (struct sockaddr *) &serverAddr, addr_size);

/*find file size*/
fp = fopen(filename, "r");
fseek(fp,0,SEEK_END);
sz = ftell(fp);
rewind(fp);

sent_bytes = send(skt, fp, sz, 0);
printf("sent %d bytes\n", sent_bytes);
fclose(fp);
}

关于sockets - 使用 TCP 发送大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009045/

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