| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Проблема с accept() |
| Автор: A... 1.2.2005, 18:47 | ||||||||
| Привет всем!!! Итак пишу следуйший код...
Компилю...
выдается ошибка
Вопрос почему...??? Везде написанно что третии параметр accept() может быть
Зарание спасибо. |
| Автор: A... 2.2.2005, 15:38 | ||
Проблемы больше нету, сделал так
Спасибо за внимание |
| Автор: lp_sun 28.5.2008, 13:10 |
| народ такой вопрос: есть сервер и клиент, нужно переслать несколько блоков инфы как это прально сделать? серверу: нужно ли на каждый блок устанавливать соединение с помощью connect или токо один раз а потом посылать их функцией send(..) в цикле клиенту: я так понял на каждый блок нужно вызывать accept(sock,....) где sock - прослушивабщий сокет правильно я понимаю суть обмена??? |
| Автор: Lazin 28.5.2008, 13:35 |
нет Добавлено @ 13:38 accept - вызывается сервером для создания соединения (подключение клиента), дальше - в зависимости от того, что тебе нужно, либо сервер начинает писать в сокет а клиент читать это, либо наоборот. В общем это определяется протоколом, рвать соединения после каждой передачи не надо... Если позволяют религиозные убеждения, то лучше использовать библиотеку asio, она теперь входит в boost |
| Автор: lp_sun 28.5.2008, 14:33 | ||||
| если я правильно тебя понял то один раз создается слушающий сокет, потом он вызывает функцию accept, которая блокирует выполнение проги пока не поступит входящее соединение, вызванное из другого процесса функцией connect т.е. получается шото типо такого: сервер(отправляет):
клиент(принимает):
такая структура получается??? протокол TCP |
| Автор: Lazin 28.5.2008, 15:17 |
| клиент и сервер местами поменяй сервер 1. создает сокет и начинает слушать порт 2. в случае если в порт кто то постучался - создается еще один сокет - для обмена данными с клиентом (дальше сервер может перестать принимать соединения, до тех пор пока клиент не отконнектится, а может продолжить слушать, если поддерживается параллельная работа с несколькими клиентами) 3. читает данные 4 закрывает сокет клиент 1. коннектится к серверу 2. если получилось (сервер "принял" подключение, создал сокет и ждет данные от клиента) отправляем данные 3. разрываем соединение как то так |