Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用套接字发送文件大小_Linux_Sockets - Fatal编程技术网

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);