送信者から受信者にテキスト ファイルを転送する 2 つの簡単なプログラムが、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 未満の場合は機能しますが、それより大きい場合はテキストの一部が失われます。私の悪い英語でごめんなさい。