Я не понимаю, почему функция read всегда возвращает -1. Я хочу читать из сокета, пока не появится '\ n'!Чтение из сокета TCP C
char* msg = (char*)malloc(sizeof(char)*120);
nleft = sizeof(msg);
while(nleft>0){
n = read(fdTcp, msg, nleft);
if(n == -1){
printf("error reading UPC\n");
exit(1); //error
}
else if (n == 0){
printf("end of reading EOF\n");
break; //closed by peer
}
nleft-=n;
msg += n;
}
nread = n-nleft;
msg[nread] = '\0';
printf("mensagem do CS: %s\n", msg);
Заранее благодарен!
Вы можете использовать 'printf ("% s \ n ", strerror (errno))' in 'if (n == - 1) {' branch, чтобы получить дополнительную информацию. – user3125367
sizeof (msg) не равно количеству символов в сообщении. – Deepak
, но я не сейчас, сколько байтов я буду читать, я хочу готово, пока не дойду до '\ n', как я могу это сделать? – user3100832