Fonduee
Музыка нас Связала
229 / 229 / 52
Регистрация: 26.03.2008
Сообщений: 616
|
|||||||||||
1 | |||||||||||
Чат (Сервер|Клиент) с UDP протоколом27.12.2013, 17:30. Просмотров 4048. Ответов 8
Метки нет Все метки)
(
Всем Привет,
вообщем задача написать простенький чат c использованием UDP протокола. Для начала я написал эхо-сервер (1 сервер - 1 клиент). Все работает на ура. Но 1 клиент для чата - это не дело. Нужно было как-то реализовать работу с n-Клиентами. Тут и "встал вопрос" - Как? UPD работает без сессий, а значит нельзя использовать "accept" и прочее, что можно с TCP. Значит так, как лучше всего запоминать пользователей? Лучше посылать простой текст на сервер или стуктуру (к примеру имя, сообщение, время, комманда)? Мои наработки (пока 1x-1x): server.c
0
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
27.12.2013, 17:30 |
Ответы с готовыми решениями:
8
Низкоуровневые сокеты. Udp клиент-сервер
Простой чат-сервер. TCP чат-сервер Сервер - Клиент |
NoMasters
Псевдослучайный
1912 / 1123 / 90
Регистрация: 13.09.2011
Сообщений: 3,181
|
|
27.12.2013, 18:45 | 2 |
Достаточно запомнить адреса, с которых приходят сообщения, client_addr то есть.
1
|
Fonduee
Музыка нас Связала
229 / 229 / 52
Регистрация: 26.03.2008
Сообщений: 616
|
|
27.12.2013, 20:03 [ТС] | 3 |
А как на счет идеи, коннектится по TCP, а обмениваться данными|сообщениями по UDP, стоит оно того или из разряда тех еще велосипедов?
0
|
fanatdebian
Z3JheSBoYXQ=
339 / 234 / 83
Регистрация: 08.07.2012
Сообщений: 577
|
|
28.12.2013, 21:45 | 4 |
Это избыточность. Это как при наличии брода через реку, переплывать ее на пароме. В двух местах все равно одновременно быть не сможешь. И да, не стоит в области, обсосанной кем только можно из авторов ( область tcp/ip ), изобретать велосипеды. Может стоит для начала ознакомиться с трудами Д. Камера "Разработка приложений типа клиент/сервер TCP/IP" там все разжевано, почему, зачем, и как.
Добавлено через 4 минуты И да, я бы использовал не ip клиентов при udp, т.к. ip имеет нестабильное состояние при динамических адресах клиентуры или использования "прокладок" ( прокси и иже с ними ), а цеплять к пакетам уникальный ключ, по аналогии с ключами ssh, только проще.
1
|
646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
|
|
02.01.2014, 20:52 | 5 |
А почему нельзя в сообщении посылать идентификатор (IP, Mac... либо хеш суммы этих значения... да что угодно)?
0
|
Fonduee
Музыка нас Связала
229 / 229 / 52
Регистрация: 26.03.2008
Сообщений: 616
|
|
03.01.2014, 17:16 [ТС] | 6 |
IP приходит и без моего участия через struct sockaddr_in, а здесь проблема была другого плана. Так как использовался UDP протокол, использование select() было не возможным, т.к. UDP соединения по типу "handshake" не устанавливает.
Сделал, как и посоветовали выше, сохранял sockaddr_in каждого клиента в хэш-таблицу и всё.
0
|
WhOo
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 2
|
|
05.01.2014, 00:05 | 7 |
0
|
Fonduee
Музыка нас Связала
229 / 229 / 52
Регистрация: 26.03.2008
Сообщений: 616
|
|||||||||||
05.01.2014, 00:15 [ТС] | 8 | ||||||||||
Могу и выложить
Клиент (Чат)
1
|
WhOo
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 2
|
|
05.01.2014, 13:32 | 9 |
0
|
05.01.2014, 13:32 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
05.01.2014, 13:32 |
Приложение клиент-сервер Клиент и сервер в одной программе Падает программа клиент-сервер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |