Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Чат на сокетах


Автор: MastEdm 26.5.2006, 23:45
Значит задача такая: необходимо реализовать простейший чат на сокетах на С. То, что нужно использовать неблокирующие сокеты, это я уже понял, а вот что дальше? Там ведь тогда будет сложно отслеживать новых клиентов. Может у кого есть соображения по этому поводу?

И ещё вопрос: какие подводные камни могут быть в такой реализации? Может какие тонкости работы с сокетами...  

Автор: bilbobagginz 29.5.2006, 10:49
во-первых, твой аватар, это уже аватар одного пользователя по имени Антон Сабуров ( если не ошибся )
во-вторых, судя по огромному количеству такого рода программ, тебе нужно их сорс скачать и проанализировать, желательно поконтактировать с разработчиками, и спросить о проблемах которые они хотели решить, к-рые НЕ хотели решить и к-рые не смогли решить.
в общем, гугл - наш рулевой.

подводных камней - уйма, но все имеют решения. 
поэтому изобретать велосипед - не советую.

а когда будут конкретные вопросы, чего-то не работает и т.д. заходи... smile 

Автор: MastEdm 1.6.2006, 00:03
Хорошо, аватарку сменил... 
По поводу программ: уже много чего видел, правда, это много мне не совсем нравится... Но основные идеи уже почерпал, что-то сам придумал (может правда не совсем оптимальное)... А вопросы будут, если что-то не заладится...  

Автор: bilbobagginz 1.6.2006, 01:16
тебя интересует транспортный отдел, а не отделочный. т.е. тебя интересуют части передачи информации, синхронизация и т.д.
можешь воспользоваться какой библиотекой групповой коммуникации ( если тебе нужна связь только во внутренней сети. там уже можно и многовещательные способы связи заюзать
 

Автор: MastEdm 1.6.2006, 17:53
Вопрос 1.
Сервер и клиент общаются через порт (3000). Почему программка
Код

nc -l -p 3000

не отображает данные, которые проходят через этот порт?

Вопрос 2.
Как лучше организовать работу с кольцевым буфером? Все сообщения кладём в буфер, затем рассылаем их по очереди. Как это лучше реализовать?   

Автор: ptr 3.6.2006, 17:02
Цитата(MastEdm @ 1.6.2006,  17:53)
Вопрос 1.
Сервер и клиент общаются через порт (3000). Почему программка
Код

nc -l -p 3000

не отображает данные, которые проходят через этот порт?

Потому что надо
Код

nc -l 3000. 

 

Автор: MastEdm 3.6.2006, 20:58
А почему? Ведь вот такая комбинация работает:
Код

nc -l -p 3000

и
Код

nc localhost 3000
 

Автор: bilbobagginz 4.6.2006, 00:03
nc - если он сервер - только отображает то что к нему приходит.
Код

nc -l -p 3000 

пытается слушать на всех интерфейсах. возможно на одном из них либо нет разрешения либо уже порт 3000  используется другой программой.
правильнее всегда указывать адрес, на к-ром неткот должен слушать, напр.:
Код

nc -l 3000 124.123.122.222  


пока.

 

Автор: MastEdm 12.6.2006, 10:05
Всё, написал и сдал на отлично. Спасибо за поддержку!

PS А вот netcat так и не научился пользоваться, пришлось свою прогу писать  smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)