Tag: 文件传输

C-套接字:编程客户端/服务器 – 应用程序以发送文件

我想编写一个应用程序来发送带有套接字的文件: 我的服务器: void str_server(int sock) { char buf[1025]; const char* filename=”test.text”; FILE *file = fopen(filename, “rb”); err_abort(“Test”); while (!feof(file)) { int rval = fread(buf, 1, sizeof(buf), file); send(sock, buf, rval, 0); } } 在这里我的客户: void RecvFile(int sock, const char* filename) { int rval; char buf[0x1000]; FILE *file = fopen(filename, “wb”); while ((rval = recv(sock, buf, […]

通过套接字传输文件,最终大小用较少的字节

我试图通过C中的套接字接收一些文件。但是服务器向我发送一个100字节文件的64字节数据包,我在目标文件上得到大约999902字节。 while ((n = read(sd, buffer_in, BUFSIZE ))) // BUFSIZE = 64 { if(n<0) { printf("Fail.\n"); fclose(archivo); return -1; } if(fwrite(buffer_in, n, 1, f) !=1 ) { printf("fwrite error.\n"); fclose(archivo); return -1; } bytes+=n; } printf("We received %d bytes", bytes); 当通过本地TCP / IP套接字使用时,它可以工作,但不能以慢速连接。 我通过调试看到我得到了很多64字节的块,并且在EOF附近有一个30字节的块。 我知道你可以在read()上获得更少的字节,因为当任何数据(> 1个字节)可用时调用返回。 但这种情况不应该被暂时抓住? 应该在n == 0时返回,那就是不再有数据(EOF)。 谢谢你的帮助。 (编辑) 发送代码如下: while (n=read(file_fd, […]