Я пытаюсь написать модель эхо-сервера \ клиента на языке C. Мой код компилируется, но выдает ошибку ошибки сегментации во время выполнения [я считаю, что на стороне сервера].При тестировании в среде отладки CLion серверный процесс может выполнить системный вызов accept () и войти в состояние ожидания, пока клиент не подключится.Поэтому я считаю, что ошибка сбоя сегментации происходит после того, как клиент совершил системный вызов connect ().
Вот соответствующие фрагменты кода (только последняя часть - не полная программа):
/* [6] LISTEN FOR CONNECTIONS ON BOUND SOCKET===================================================================== */
struct sockaddr_storage ample; /* from Beej Guide 5.6 accept() */
socklen_t ample_sz = sizeof(ample);
fd_activeSock = accept(fd_listenSock, (struct sockaddr *)&established_SERV_param, &le_sz);
if (fd_activeSock == -1) /* Error checking */
{
fprintf(stderr, "\nNo forum for communication...\nTERMINATING PROCESS");
exit(EXIT_FAILURE);
}
printf("\nCommunication Established! What's your sign??");
freeaddrinfo(established_SERV_param); /* free up memory */
/* [7] ACCEPT A CONNECTION (BLOCKING)============================================================================= */
/* MAIN LOOP====================================================================================================== */
while(1)
{
bzero(msg_incoming, 16);
recv(fd_activeSock, msg_incoming, 16, 0);
printf("%s", msg_incoming);
send(fd_activeSock, msg_incoming, 16, 0);
}
Когда я запускаю обе программы в отдельных терминалах (сначала сервер обрабатывает, конечно),последний оператор печати, который выполняется перед ошибкой:
printf("\nCommunication Established! What's your sign??");
Ошибка выводится на серверный терминал.Есть дамп ядра;для будущих проблем, может кто-нибудь предложить учебник для начинающих по прочесыванию файлов дампа ядра.Кроме того, я запустил код с закомментированным вызовом freeaddrinfo () и все еще получаю ошибку ошибки сегментации, поэтому я не верю, что это проблема.Зачем вообще его запускать?Я не хочу утечки памяти.Спасибо за вашу помощь.