Я пытаюсь прочитать имя пользователя и пароль от клиента и передать его на сервер. Я также пытаюсь динамически распределять строки (я не знаю много об этом, пытаясь изучить его), и я уверен, что есть проблема. На последних двух printf я получаю ошибку сегментации (сбрасывание ядра).Ошибка сегментации на клиентском/серверном приложении C++ при печати
int nrbytes;
char *Usercl,*Passcl;
if(read (tdl.cl, &nrbytes, sizeof(int)) <= 0)
{
printf("[server]Thread - %d\n",tdl.idThread);
perror("Read() error\n ");
}
Usercl = new char[nrbytes+1];
if(read (tdl.cl, &Usercl, sizeof(nrbytes)) <= 0)
{
printf("[server]Thread - %d\n",tdl.idThread);
perror("Read() error\n ");
}
if(read (tdl.cl, &nrbytes, sizeof(int)) <= 0)
{
printf("[server]Thread - %d\n",tdl.idThread);
perror("Read() error\n ");
}
Passcl = new char[nrbytes+1];
if(read (tdl.cl, &Passcl, sizeof(nrbytes)) <= 0)
{
printf("[server]Thread - %d\n",tdl.idThread);
perror("Read() error\n ");
}
printf("[server]Thread - %d\n. User:%s\n",tdl.idThread,Usercl);
printf("[server]Thread - %d\n. Pass:%s\n",tdl.idThread,Passcl);
Я получаю ошибку сегментации (ядро сбрасывается) на последних 2 печатных файлах.
Я предполагаю, что данные, которые вы читаете, не являются нулевыми. –
Кроме того, 'if (read (tdl.cl, & Usercl, sizeof (nrbytes)) <= 0)' --->' if (read (tdl.cl, Usercl, nrbytes) <= 0) ' –