Как реализовать мультикаст udp клиент-сервер в одной программе?

Я написал сервер и клиент как отдельные приложения. Они общаются через многоадресную рассылку UDP (потому что мне нужно, чтобы каждый, кто присоединяется к группе, мог читать и писать сообщения). Сейчас у меня два окна, но моя цель создать одну простенькую программу для чата, но я не умею слушать и отправлять одновременно. Нужно ли создавать 2 розетки? Или я могу использовать только один? Я даже пытался объединить оба приложения в одно, но мне это не удалось (знаю, знаю... но я был в отчаянии).

Я искал google для tut, но не преуспел.

Я использую С++.


person roman    schedule 18.05.2011    source источник
comment
Что плохого в наличии сервера с несколькими подключенными клиентами, которые отправляют сообщения друг другу? Это слишком расплывчато для хорошего ответа, если вы не знаете больше о том, что вы в настоящее время реализовали, и каковы ваши требования...   -  person AJG85    schedule 19.05.2011
comment
У меня есть локальная сеть с 10-12 клиентами, и нам просто нужна простая программа для чата, нам не нужны никакие серверы, просто простое приложение. Надеюсь, я достаточно ясно выразился. Извините за мой язык, не носитель языка, поэтому, возможно, поэтому мой пост такой загадочный :)   -  person roman    schedule 19.05.2011
comment
Ну, чтобы констатировать очевидное, вы можете просто использовать бесплатную программу, такую ​​​​как Skype, но я имел в виду требования к кодированию для вашего проекта и подробности о том, что вы реализовали в настоящее время. Простейшая система чата, которую вы можете реализовать, будет основана на браузере с использованием сообщений HTML, но, поскольку у вас уже есть многоадресная рассылка, вы можете комбинировать слушателей с трансляциями в одной программе. Вот кое-что для простого вдохновения: ntrg.cs.tcd.ie/ старшеклассник/4ba2/мультикаст/antony/example.html   -  person AJG85    schedule 19.05.2011
comment
Да, именно этим я и занимаюсь - совмещать слушателей и эфиры. Спасибо за ссылку!   -  person roman    schedule 19.05.2011


Ответы (1)


Вы можете использовать один или два сокета, все зависит от того, хотите ли вы привязаться к определенному сетевому адаптеру и хотите ли вы использовать одноадресные и широковещательные пакеты. Часто проще управлять одним для отправки и одним для получения.

Чтобы прослушивать отправленные многоадресные пакеты на одном и том же хосте, проверьте параметр сокета IP_MULTICAST_LOOP, отметив, что он применяется по-разному в Windows и Unix.

person Steve-o    schedule 18.05.2011