Я написал простую связь tcp/ip
между клиентом и сервером в localhost в c++
. Он отправляет по tcp/ip массив из unsigned char
. Размер этого массива заключается в следующем:C++ предельные данные о подключении tcp
unsigned char *bytes = (unsigned char*)malloc(sizeof(unsigned char)*96000000);
//array is filled
Однако, когда я пишу на сокете
n = write(sockfd,bytes,96000000);
if(n<0){
cout << "error writing"<< endl;
exit(1);
} else{
cout << "bytes written " << n <<endl;
}
количество записанных байтов (переменная n
), что стандартные выходные распечатывает является 5196978
, а не 96000000
, как я и ожидал. Зачем? есть ли ограничение в числе байтов, которое я могу написать в соединении TCP /IP
? Как я могу решить эту проблему?
Так что я должен зацикливаться на стороне сервера, пока я читаю? –
@ L.Joe сторона сервера немного другая - вы можете * или * loop или - на реализациях, которые ее поддерживают, использовать флаг 'MSG_WAITALL', см. [' Recv'] (http://linux.die.net/ человек/2/RECV). –