24.12.2006, 23:02
общий
это ответ
Здравствуйте, Дмитриев Денис Юрьевич!
В программировании возможно все, кроме ИИ.
Реализовать можно несколько способами.
1) использовать неблокируемый ввод/вывод
2) использовать потоки
В первом случае через fcntl устанавливаем принимающему сокету и файловым дескрепторам ввода/вывода флаг O_NONBLOCK. В цикле проверяем состояния ввода (ввел ли что-нибудь пользователь или нет), а так же слушаем не пришло ли нам что-нибудь на сокет. Это достаточно сложно кодить нужно много, ну вообще не удобно.
Второй способ - с помощью потоков. Создается дополнительный поток для прослушки или ввода данных. Один поток слушает с помощью select не пришло ли что-нибудь, ну и выводит это дело. А второй обрабатывает ввод данных.
Все это побродно описано у Стивенса - unix:разработка сетевых приложений. Там и исходные коды есть и комментарии и куча другой полезной информации.