Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / kNet, сокеты. (2 стр)

kNet, сокеты. (2 стр)

Поделиться

Страницы: 1 2 3 Следующая

ZabПостоялецwww5 мая 201715:54#15
SkyDev
> Это уже проблема пользователя. Все аспекты предусмотреть и решить невозможно.
Эту проблему решают, позволяя юзеру явно ввести ip-адрес сервера, если он не находится сам через броадкаст. Некоторая нагрузка на неразвитые юзерские мозги присутствует, для части юзеров непосильная, но другая часть играть сможет.
ZabПостоялецwww5 мая 201716:02#16
SkyDev
> Если не стандартизированная технология, значит не подходит.
Она стандартизированная, но технически не воплощенная. Не знаю что помешало, но ни один сервер большой сети мультикасты не поддерживает, а в локальной сети они не очень то и нужны. Для серверов софт был написан, но его не устанавливают, вероятно он сервера рушит. Чтобы мультикаст заработал, должна его поддерживать вся цепочка доставки сообщений.
9К720Участникwww5 мая 201716:03#17
Zab
> для части юзеров непосильная
Ввести адрес вручную - вбить четыре цифры из сервера. Никаких проблем вообще нет, если сделано нормально. Мы так играли в диаблу первую в школе, в душе не чая что эти 4 цифры значат.
ZabПостоялецwww5 мая 201716:09#18
9К720
> Ввести адрес вручную - вбить четыре цифры из сервера. Никаких проблем вообще нет, если сделано нормально.
Сделай поправку на уровень деградации современного типичного игрока. Думаю, вы были суперинтеллектуалами, по сравнению с ним. Инструкция, которой надо последовательно выполнить три операции, не перепутав последовательность, для большинства юзеров невыполнима. Ну, обломятся такие юзеры в случае не совсем типовой сети, ничего страшного, пусть ищут типовую. А кто чуть поумнее голубя, тот справится.
9К720Участникwww5 мая 201716:12#19
Zab
> Возможно, в локальной сети ваш админ найдет как установить софт для мультикаста
Эм. Какой софт? Ты сам пишешь софт для мультикаста.
Вот для джавы.
InetAddress group = InetAddress.getByName("203.0.113.0");
DatagramPacket packet;
packet = new DatagramPacket(buf, buf.length, group, 4446);
socket.send(packet);

и прием

MulticastSocket socket = new MulticastSocket(4446);
InetAddress group = InetAddress.getByName("203.0.113.0");
socket.joinGroup(group);
...
socket.receive(packet);

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

SkyDevПостоялецwww5 мая 201716:17#20
Zab
Эту проблему решают, позволяя юзеру явно ввести ip-адрес сервера, если он не находится сам через броадкаст.

Такая система подключение к комнате уже реализована, но хочу добавить и автоматический поиск. Практический интерес.

9К720
Присоеденяюсь к словам Zab'а о деградации юзера. Если есть способ автоматизации лучше автоматизировать иначе какую-никакую а долю рынка можно потерять.

ZabПостоялецwww5 мая 201716:24#21
9К720
> Какой софт? Ты сам пишешь софт для мультикаста.
Я только пишу команды для мультикаста. Будут они выполняться или нет, от локальной машинки не зависит, софт для свичей, роутеров и прочих средств доставки я не пишу.
И адреса каналов брать тоже негде. Они должны были выдаваться провайдерами, также как и внешние ip-адреса, но не выдаются, потому как не нужны никому.

Фокус с мультикастами - ты не знаешь получателей при отсылке и ни один из узлов доставки их тоже всех знать не обязан. Если есть подписчики у какого-то узла, он принимает мультикасты, размножает их и рассылает вейром всем, кто подписался в его зоне. Всем участникам надо знать только ip канала. Так задумывали экономить трафик, по настоящему массовые рассылки чтобы шли не из источника, а ветвились по пути, по мере потребности. Под это был разработан стандарт, но что-то пошло не так при реализации его поддержки. А стандарт есть... api к нему, широко доступная документация, можно даже подумать, что работать будет, часто забывают сказать что он не реализован.

Правка: 5 мая 2017 16:25

9К720Участникwww5 мая 201716:55#22
Zab
> софт для свичей, роутеров и прочих средств доставки я не пишу.
Аналогично для броадкаста и обычных ip пакетов. Еще файрволы на роутерах ты не сам настраиваешь. Исходя из твоей логики сетевые пакеты вообще нельзя посылать, ибо не ты пишешь софт для роутеров и не ты настраиваешь файрволы.

Zab
> И адреса каналов брать тоже негде
Я в твое личное пользование выдаю адреса из диапазона 239.0.0.0/8
Можешь брать любой из этих. Только не бери 239.255.255.250, он уже занят под DLNA и SSDP (хотя возможно SSDP автору и стоило бы взять)

Zab
> . Если есть подписчики у какого-то узла, он принимает мультикасты, размножает
> их и рассылает вейром всем, кто подписался в его зоне
Мы сейчас про локалку, при чем тут интернет? В локалке все работает. Любой роутер включая китайщину за 200 рублей умеет роутить локальные мультикаст пакеты.
В интернете никакого решения кроме как знать адрес подключения в принципе нет. Броадкаст там не работает.

Zab
> часто забывают сказать что он не реализован.
Ага, а мужики то не знают.  Смарттв, приставки, компы - все используют upnp.

Правка: 5 мая 2017 17:12

9К720Участникwww5 мая 201717:11#23
Zab
> а в локальной сети они не очень то и нужны
Как раз таки именно в локальной они и нужны. Тот же DLNA.
А в глобальной сети они не нужны, там стоит сервер с известным адресом и за ним следят админы. Дома в локалке сервера с заранее известным адресом нет.

SkyDev
> Такая система подключение к комнате
Я не понял. Что мешает завести сервер в интернете и подключаться к нему, как все делают?

SkyDevПостоялецwww5 мая 201717:23#24
9К720
Что мешает завести сервер в интернете и подключаться к нему, как все делают?

P2P архитектура сетевой сессии.
9К720Участникwww5 мая 201717:32#25
SkyDev
> P2P архитектура сетевой сессии.
Очень глупый странный ответ.Ну переделайте на не-p2p. Что мешает то?

Программирование предназначено решать проблемы, поэтому ответ на вопрос "что мешает завести сервер" будет лежать не в плоскости программирования. Например "нужна возможность играть по сети в тайге без интернета". Или "несмотря на то что у нас очень серьезная контора, мама не дает 10 баксов в месяц на дешевую vps" Но никак не ответ "мы так закодили, а теперь боремся с нашим решением". Вопрос то стоял вообще - зачем вам p2p? Почему не сделать как у всех?

Правка: 5 мая 2017 17:33

SkyDevПостоялецwww5 мая 201717:43#26
9К720
Держаться в рамках P2P взаимодействия, такова задача! Я не ищу оптимальное или лучше решение, есть критерии реализации которых нужно придерживаться!
9К720Участникwww5 мая 201718:22#27
SkyDev
> есть критерии
причины почему именно эти критерии были выбраны? Лид поставил задачу копать от забора до обеда, мама денег на сервер не дает, в тайге планируется разворачивать систему, лабораторная работа или какие-то другие?

Я к тому, что возможно у тебя XY-проблема.

+ Показать

Может быть тебе не надо использовать p2p, если ты назовешь что тебе нужно получить, возможно тебе предложат другое решение, о котором ты даже не подозревал?

У тебя ведь именно это было в этой теме с самого начала. Ты спрашивал как отправить пакет на 255.255.255.0, а по факту тебе нужно было решить задачу установления устройствами связи между собой. Вот я и пытаюсь выяснить, что надо то, откуда взялась задача "Держаться в рамках P2P взаимодействия"

Правка: 5 мая 2017 18:28

SkyDevПостоялецwww5 мая 201721:33#28
Ты спрашивал как отправить пакет на 255.255.255.0, а по факту тебе нужно было решить задачу установления устройствами связи между собой.
Вопрос был как собрать инфу с доступных клиентов в локальной сети о которых мы ничего не знаем, для этого и нужен широковещательный запрос в рамках LAN. Здесь нет XY, мне нужно решение в рамках p2p архитектуры.
Вот я и пытаюсь выяснить, что надо то, откуда взялась задача "Держаться в рамках P2P взаимодействия"
Я работаю над pet-project'ом, мне не нужно взаимодействие игроков через интернет, похтому сетевой геймплей я ограничил LAN, а для максимального удобства в рамках задачи выбрал P2P. Игра клон флаппиберда но для двоих, здесь клиент-серверное нагромождение будет лишним.
ZabПостоялецwww5 мая 201722:12#29
Через сервер игроки могут только находить друг друга, а играть p2p. Часто на сервер еще навешивают функционал хранения таблиц рекордов, при таком подходе, но в самой игре он участия не принимает.

Страницы: 1 2 3 Следующая

/ Форум / Программирование игр / Сеть

2001—2017 © GameDev.ru — Разработка игр