Linux 使用套接字发送文件大小
如何通过套接字发送长消息?如何接收 服务器:Linux 使用套接字发送文件大小,linux,sockets,Linux,Sockets,如何通过套接字发送长消息?如何接收 服务器: long size; f = fopen("file.txt","r");; fseek(f,0,SEEK_END); size = ftell(f); rewind(f); printf("Size: %ld Bytes\n",size);
long size;
f = fopen("file.txt","r");;
fseek(f,0,SEEK_END);
size = ftell(f);
rewind(f);
printf("Size: %ld Bytes\n",size);
/* send "size" with send method */
send(socket,???,???,0);
客户:
long size;
recv(socket,???,???,0);
感谢所有人的帮助。假设连接两侧的端部和大小相同(长):
send(socket, &size, sizeof size, 0);
以及:
不过,这些假设可能不正确,所以请小心。谢谢!我可以在服务器上使用hton(size)和在客户端使用nton(size)来提高安全性吗?好吧,你应该使用
htonl
和ntohl
(或者可能是64位版本),因为它们是长的
而不是短的
变量,但是是的,这就是想法。对不起!正确的!非常感谢你!如果我不知道服务器和客户端的软件体系结构,那么存储文件大小的最佳选择是什么?在您正在实施的协议中指定大小。如果需要处理大于4GB的文件,则使用64位数据类型(unsigned\u int64
,uint64\u t
,等等),否则改用32位数据类型(unsigned int
,int32\u t
,等等)。
recv(socket, &size, sizeof size, 0);