2011-12-11 2 views
0

Я пытаюсь написать чат-приложение, и у меня есть несколько вопросов , которые я пытаюсь выработать. Приложение - это приложение чата, которое работает на Lan. Один клиент действует как хост , а другие клиенты могут подключаться к хосту и публично общаться между собой. Я хочу также вариант клиента, начинающего частный чат с уже подключенным клиентом. Итак, каков наилучший способ для этого. Например, если сообщение запроса (которое содержит IP-адрес клиента) направляется через хост, а затем, если запрашиваемый клиент хочет подключиться, они инициируют соединение с использованием ip запрашивающего клиента. Если это также будет указано на отдельном номере порта. Имеет ли значение, если ваше приложение использует несколько портов.Lan chat design

Или, когда клиент подключается к хосту, хост должен отправить им список пользователей с IP-адресами, а затем клиент может попытаться установить соединение с другим клиентом для частного чата.

Надеюсь, это все имеет смысл. Любая помощь будет оценена

Благодаря

ответ

0

Я все для создания самостоятельно, но в зависимости от временных ограничений иногда искать альтернативные варианты, как this я использовал его в компании я работал раньше. Это действительно хорошо. Но если вы решите сделать свой собственный, вам сначала нужно наметить логику, структуру, базу данных и т. Д., Прежде чем вы даже подумаете о коде.

+0

Да спасибо за ответ. Я пытаюсь научиться делать это для себя. – kiznore

1

Если вас просто интересует быстрый и грязный чат, который нужно работать только через локальную сеть, я предлагаю, чтобы все клиенты отправляли и получали широковещательные UDP-пакеты на одном известном номере порта. Тогда никакой сервер не нужен вообще, и, таким образом, никакое открытие не требуется, и все намного проще.

Если вы действительно хотите идти по маршруту клиент-сервер, вы должны иметь свой сервер (как хост), принимающий TCP-соединения на одном хорошо известном порту, а затем использовать его select() или poll () для мультиплексирования входящих TCP-соединений и пересылки любых данных, поступающих из каждого входящего сокета TCP во все остальные сокеты. Клиенты могут подключаться через TCP к серверу на этом известном порту, но клиенты должны будут иметь какой-то способ узнать, к какому IP-адресу подключиться ... либо от того, что пользователь вводит IP-адрес сервера, либо с помощью некоторого механизма обнаружения (для его реализации можно использовать широковещательные UDP-пакеты). Однако этот способ намного больше.

+0

Я иду по трассе tcp. У меня уже есть серверное вещание, использующее UDP, поэтому клиент может подключаться к информации. Его частная чат-части, которые я нахожу трудно понять. У меня разные идеи, например, если каждый клиент прослушивает пакет udp для частного чата. Неправильно ли приложение использовать несколько портов за раз или не имеет значения? – kiznore

+0

Использование нескольких портов в порядке; единственная потенциальная проблема заключается в том, что если у кого-то есть брандмауэр, который блокирует входящие пакеты или соединения, и им нужно настроить исключения для брандмауэра, чтобы позволить им работать, и тогда им придется настраивать несколько исключений (по одному для каждого порта), а не только один. –

+1

@Jeremy Friesner: Меня интересует быстрый и грязный чат в локальной сети. Как вы уже упоминали, нет необходимости использовать какой-либо сервер, можете ли вы рассказать, как это возможно? Я имею в виду пример кода, который представляет его. – ankurtr