Что ж, когда вы смотрите на документацию по системному вызову read () , он говорит, что последний аргумент - это размер вашего буфера.
В вашем случае вам понадобитсячтобы убедиться, что rbuffer
достаточно велико!
Я думаю, у вас есть где-то:
unsigned char rbuffer[255];
n = read( sockfd, rbuffer, 255);
Вы захотите сделать это:
unsigned char rbuffer[1024];
n = read( sockfd, rbuffer, 1024);
Чтобыубедитесь, что в качестве размера не указано недопустимое значение, используйте sizeof( rbuffer )
, если оно расположено в стеке (как указано выше).
Если он выделяется динамически, вам придется использовать размер, который вы использовали при выделении буфера:
int bufsize = 1024;
char *buffer = malloc(bufsize);
n = read( sockfd, buffer, bufsize);