Есть сервак, который создает сокет:
int sock = socket(PF_INET, SOCK_STREAM, 0);
bind(sock, server_addr, sizeof(*server_addr));
listen(sock, 100);
int client = accept(sock, 0, 0);
далее он принимает от клиента один int и посылает клиенту два int
recv(client, &req, sizeof(req), 0);
send(client, &rep, sizeof(rep), 0);
send(client, &rep, sizeof(rep), 0);
Клиент подключается к серверу как:
int srv = socket(PF_INET, SOCK_STREAM, 0);
connect(srv, ......);
если теперь клиент выполнит такую последовательность:
recv(srv, &req, sizeof(req), 0);
send(srv, &rep, sizeof(rep), 0);
send(srv, &rep, sizeof(rep), 0);
close(srv);
то все будет ок, а если такую:
recv(client, &req, sizeof(req), 0);
close(srv);
то серверная часть вылетит на втором вызове send! Причем просто вылетит приложение перестает работать и возвращается в командную строку! Отмечу что сервер работает в отдельном потоке (pthread).
Собственно вопрос: Чего сделать чтобы сервак не вылетал?
Ответ на:
комментарий
от Reset
Ответ на:
комментарий
от Reset
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от mv
Ответ на:
комментарий
от Krivenok_Dmitry
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Сокеты в Си (продолжене) (2005)
- Форум Подключиться к unix-сокету через bash (2020)
- Форум TCPSERVER (2019)
- Форум Проблемы с серверным приложением (2003)
- Форум Клиент, сервер и их правильная работа. (2005)
- Форум получаю несобранный пакет (2002)
- Форум Таймаут для connect() (2009)
- Форум разбираюсь с классами непонятные ошибки при компиляции объясните в чем я неправ??? (2010)
- Форум Сокеты, Передача данных, C/C++ (2006)
- Форум Сокеты. (2004)