Проблемы с сокетами

Автор: frp Дата: 16.06.2008 19:13 Я работаю в KDevelop. Хочу создать программу, которая будет использовать сокеты. В man не очень-то понятно написано. Как создать сервер TCP? Как создать клиент? Как заставить Линукс посылать сигнал серверу, если к нему кто-то подключиться или придет сообщение от клиента? Как заставить Линукс послать сигнал клиенту, если к нему придет сообщение?
Re: Проблемы с сокетами 16.06.2008 22:34peter_ir Слишком много вопросов. Есть книги на русском, например, "Разработка приложений
в среде Linux", Джонсон, Троан.
Re: Проблемы с сокетами 17.06.2008 09:58peter_ir Вот еще на [forum.redhat-club.org] человек привел ресурс [books.sysfaq.ru] ,
по программированию там тоже есть.
Re: Проблемы с сокетами 18.06.2008 15:33frp Спасибо.
Как создать клиент и как создать сервер я разобрался. А что делать с сигналами? Ведь сервер должен работать с клиентами и одновременно принимать соединения.
Re: Проблемы с сокетами 18.06.2008 21:57peter_ir В этой книге, а также в "Системное программирование в UNIX", К. Хэвиленд,
Д. Грэй, Б. Салама, ДМК, 2000, есть примеры. Вообще соединение устанавливает
клиент командой connect.
Re: Проблемы с сокетами 22.06.2008 21:08frp Где скачать книгу "Системное программирование в UNIX"?
Re: Проблемы с сокетами 22.06.2008 21:53peter_ir Почему кто-то для тебя должен что-то искать?
1) Расширенный поиск на [www.yandex.ru] дал 8-й ссылкой интернет-магазин,
где она есть;
2) Она есть на [www.ozon.ru] .
Правда, придётся ждать, пока её пришлют.
Re: Проблемы с сокетами 23.06.2008 14:15frp Посмотрел. Во всех интернет-магазинах она отсутствует на складе. А вообще я разобрался получше и сделал почти все без сигналов. Только нужен метод, как узнать если клиент отключиться. poll, epoll и select не помогут(ведь при их использовании программа останавливается и графический интерфейс "вешается";-).
Re: Проблемы с сокетами 25.06.2008 13:48Юрий Клещетников Я читал в "Корманном справочник Линукс" (как то так), что за пользователями можно следить через консоль.
Но к сожалению не запомнил команду.
Если вспомню или будет возможность оказаться дома - отвечу.
Но лучше, если Вы детальней почитаете про баш, так есть решение такой проблемы.
Re: Проблемы с сокетами 25.06.2008 21:32peter_ir frp писал(а):

> Посмотрел. Во всех интернет-магазинах она отсутствует на
> складе. А вообще я разобрался получше и сделал почти все без
> сигналов. Только нужен метод, как узнать если клиент
> отключиться. poll, epoll и select не помогут(ведь при их
> использовании программа останавливается и графический интерфейс
> "вешается";-).
Я сам с сокетами дело не имел, но в примере в книге сервер для обмена данными с
клиентом создаёт дочерний процесс, а родительский с дочерним могут обмениваться
сообщениями по каналу, т.е. надо создавать новый канал при каждом соединении и
пусть дочерний процесс после закрытия сокета уведомляет об этом родительский,
т.е. сервер.
Re: Проблемы с сокетами 26.06.2008 20:23frp Спасибо. Так и сделаю. А вообще-то при чтении с сокета если соединение прервано, то в errno помещается код ошибки при попытке чтения.
Re: Проблемы с сокетами 26.06.2008 22:11peter_ir А при попытке записи в оборванный сокет процесс получит сигнал SIGPIPE,
который он может перехватить, закрыть сокет и тоже уведомить сервер.
Re: Проблемы с сокетами 26.12.2008 16:34Elrock Самый работоспособный пример использования сокета - в документации к glibs. Есть в составе многих дистров.
RSS-материал