我的客户端程序需要将大文件发送到服务器程序 . 客户端连接到服务器并且服务器接受它后,客户端指定它将发送的文件的名称 . 现在,客户端需要使用TCP发送文件 .
我知道如果文件的大小很小(小于1k字节?),我可以直接使用套接字编程中的“send”函数调用它来发送它 . 但是,如果我的文件大小很大,大约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); }
1 回答
我正在尝试类似的东西和我的客户端代码看起来像这样