我想知道,两个将文本文件从发送方传输到接收方的简单程序如何发送超过 65536 字节(IP 数据包的最大大小)。这是发件人:
FILE *fp=fopen("file_to_send.txt","r");
char msg[65536];
len = strlen(msg)+1;
nwrite=0;
printf ("write()\n");
fflush(stdout);
do{
n=write(socketfd, &(msg[nwrite]), len-nwrite);
nwrite+=n;
}
while( (n<0) && (errno==EINTR) );
这是接收器:
#define MAXSIZE 65536
.....
char buf[MAXSIZE];
nread=0;
do{
n=read(socketfd, &(buf[nread]), MAXSIZE ) ;
fflush(stdout);
nread+=n;
}while( (n<0) && (errno==EINTR) );
如果 file_to_send 权重 < 大于 65536,它会起作用,但如果它更大,我会丢失部分文本。对不起,我的英语不好。