重要なのは、4096 バイトを送信するが、約 119 バイトしか送信しないことです。有益な情報を運ぶ。
100 バイトは \r\n\r\n で終わるため、クライアントで \r\n\r\n を読み取ると、その文字列からの情報の受信を停止し、最初からやり直す必要があります。
フラッシュする必要があるのか、ソケットを閉じる必要があるのか わかりません...
それらはソケット TCP です。
クライアントで私は:
buf details[4096];
strcpy(details,"1");
strcat(details,"10/04/12");
strcat(details,"Kevin Fire");
strcat(detils,"abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde\r\n\r\n");
nbytes_sent = send(sock,(char *)details,sizeof(details),0);
一方、サーバーは...
char buf[20];
memset(buf,'\0',20);
while(!end){
nbytes_read=recv(sclient,(char *)ress,sizeof(ress),0);
if(strcmp(ress,"1")==0){
printf("Details: %s (%i)\n",buf,nbytes_read);
while(strcmp(buf,"\r\n\r\n") != 0){
nbytes_read=recv(sclient,(char *)buf,sizeof(buf),0);
cout.flush();
printf("Details: %s (%i)\n",buf,nbytes_read);
} }
if(strcmp(buf,"\r\n\r\n")==0) printf("The End\n");
cout.flush();
}
}
新しい「ress」を読みたいだけで、役に立たない残りのバイトを取得したくありません。
前もって感謝します。