Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Hed-kun

Программирование, т. 5.1.

Рекомендованные сообщения

Перечисли конкретно, как это лучше реализовать?

Или у тебя нет аргументов?

 

ну и ахуеть как тебе помогут знания полученые в процессе написания этого кода - ты теперь умеешь раскидывать юзеров по портам :pray:

и хардкодить айди юзера :pray: :pray: :pray:

Не помогут в чем? В жизни? В карьере?

Поделиться сообщением


Ссылка на сообщение

для начала не хардкодить айди юзера, чтоб не надо было править ни исходник, ни даже конфиги для создания отдельного юзера

чем-то вроде такого

если б там айди отдавался клиенту хотя бы чем-то вроде отдельного соединения по 10001 порту (чисто для этой задачи), которое только айдишниками и занимается и генерирует их по прицнипу "привет 10001 порт, я новый пользователь", "10001: твой айди 17, удачной игры /close", "привет 10017 порт, я игрок №17"

Поделиться сообщением


Ссылка на сообщение

зачем пользователю программы знать порт, если этот порт указывается программой?

да я не о пользователе как таковом, я о клиентской софтине

у него порт = 10к+айди

или ты считаешь что вшитый айди юзера порт это нечто хоть отдалённо нормальное?

 

если б там айди отдавался клиенту хотя бы чем-то вроде отдельного соединения по 10001 порту (чисто для этой задачи), которое только айдишниками и занимается и генерирует их по прицнипу "привет 10001 порт, я новый пользователь", "10001: твой айди 17, удачной игры /close", "привет 10017 порт, я игрок №17"

 

а вшить айди в код это :avtorklif: :avtorklif: :avtorklif: :avtorklif: :avtorklif: :avtorklif: :avtorklif: :avtorklif: :avtorklif:

нужно больше смайликов

 

программа же так написана, что там есть отдельный порт для регистрации, который выдает айди клиентам


Публикация отключена

Поделиться сообщением


Ссылка на сообщение

программа же так написана, что там есть отдельный порт для регистрации, который выдает айди клиентам

я неправильно понял это предложение?

а порт как я уже говорил оговорен заранее (захардкоден в клиенте)

Поделиться сообщением


Ссылка на сообщение

ты наверное вот это не прочитал:

 

и вобщето это я сделал так, как во всех играх: есть главный порт подключения который перенапрявляет клиентов в динамически созадваемые сокеты, которые офк биндятся к 1 порту(получается мы изобрели свои сессии, прямо как в TCP :trollface: )


Публикация отключена

Поделиться сообщением


Ссылка на сообщение

У меня есть аргументы.

Перечисляю:

1) Не платят денег - не пиши код.

2) Платят деньги - пиши код.

 

Твоя ошибка уже в том, что ты начал это делать.

Поделиться сообщением


Ссылка на сообщение

Допустим, что я завтра сделаю окошечко в игровом клиенте где можно ввести свой id

Это что-то изменит? Да, тестировать станет легче.

ты научишься делать функцию чисел фибоначчи по формуле, а не вшивая её в код, что уже прогресс в твоей ситуации

может со временем и чему-то сложнее научишься

Поделиться сообщением


Ссылка на сообщение

кот тут вообще причем

 

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

0 <= id < 1000

 

ожидается, что id уникален для каждого игрока.

ресепшн тред читает id в начале пакета и добавляет в списко игроков.

в то время в конструкторе игрока я запускаю еще один тред который слушает приватный порт для игрока (на сервере) и парсит данные

в общем итого тредов:

1. главный тред, инициализирует в начале ресепшн тред а дальше в бесконечном цикле транслирует состояние игры всем участникам

2. ресепшн тред, слушает корневой порт (11000) который оговорен с клиентами и регистрирует новых участников (типа .add(new Player(..))

3. тред на каждого игрока - слушает 11000 + id. спавнится прямо в конструкторе. но ничего не передает (очевидно)

 

все летит, быстро, плавно, без лагов. то, что и требовалось с моей стороны.

а другие ребята офк заняты самим геймплеем, графикой и т.д

срок сдачи: 1 семестр


Публикация отключена

Поделиться сообщением


Ссылка на сообщение

ты наверное вот это не прочитал:

 

и вобщето это я сделал так, как во всех играх: есть главный порт подключения который перенапрявляет клиентов в динамически созадваемые сокеты, которые офк биндятся к 1 порту(получается мы изобрели свои сессии, прямо как в TCP :trollface: )

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

Поделиться сообщением


Ссылка на сообщение

ты наверное вот это не прочитал:

 

и вобщето это я сделал так, как во всех играх: есть главный порт подключения который перенапрявляет клиентов в динамически созадваемые сокеты, которые офк биндятся к 1 порту(получается мы изобрели свои сессии, прямо как в TCP :trollface: )

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

да, я то тебя прекрасно понял:

 

у тебя есть хардкодед порт 11000 на котором каждый игрок получает номер порта, к которому ему нужно подключаться

 

а мертвойкоже это было непонятно


Публикация отключена

Поделиться сообщением


Ссылка на сообщение

кот тут вообще причем

 

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

0 <= id < 1000

 

ожидается, что id уникален для каждого игрока.

ресепшн тред читает id в начале пакета и добавляет в списко игроков.

в то время в конструкторе игрока я запускаю еще один тред который слушает приватный порт для игрока (на сервере) и парсит данные

в общем итого тредов:

1. главный тред, инициализирует в начале ресепшн тред а дальше в бесконечном цикле транслирует состояние игры всем участникам

2. ресепшн тред, слушает корневой порт (11000) который оговорен с клиентами и регистрирует новых участников (типа .add(new Player(..))

3. тред на каждого игрока - слушает 11000 + id. спавнится прямо в конструкторе. но ничего не передает (очевидно)

 

все летит, быстро, плавно, без лагов. то, что и требовалось с моей стороны.

а другие ребята офк заняты самим геймплеем, графикой и т.д

срок сдачи: 1 семестр

да, который аутентифицирует игрока, от которого пришел пакет по id который зашит в пакет.

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

11000 + id это просто костыль, который я придумал чтобы быстро тестить на своей машине

я изначально запостил это как шутку

Поделиться сообщением


Ссылка на сообщение

нихуя у вас с портов бамбануло

Поделиться сообщением


Ссылка на сообщение

че ты пристал со сфоим фибоначчи

больше желчи, проецируй свою злобу в интернет, у тебя хорошо получается.

какой ещё жёлчи/злости

я хочу тебя на пусть истинный наставить (это если выражаться пафосно), в твоих же интересах бтв

 

потому что практической пользы от реализации твоей задачи именно таким образом очень немного, разве не практическая польза есть основной задачей для такого проекта?

смысл делать сервер на 2+ юзеров если ты просто расклонировал на 1к портов решение которое является нормальным только для соединения сервер <-> 1 клиент

Поделиться сообщением


Ссылка на сообщение

ну вообще некоторый здравый смысл в использовании большого количества портов есть: операционная система накапливает пакеты отправленные на один порт в очереди, а когда эта очередь переполняется, то следующие пакеты отклоняются.


Публикация отключена

Поделиться сообщением


Ссылка на сообщение

у тебя есть хардкодед порт 11000 на котором каждый игрок получает номер порта, к которому ему нужно подключаться

немного не так

игрок присылает свой айди серверу и после этого тот начинает прослушивать нужный порт

Поделиться сообщением


Ссылка на сообщение
(изменено)

че ты пристал со сфоим фибоначчи

больше желчи, проецируй свою злобу в интернет, у тебя хорошо получается.

какой ещё жёлчи/злости

я хочу тебя на пусть истинный наставить (это если выражаться пафосно), в твоих же интересах бтв

 

потому что практической пользы от реализации твоей задачи именно таким образом очень немного, разве не практическая польза есть основной задачей для такого проекта?

смысл делать сервер на 2+ юзеров если ты просто расклонировал на 1к портов решение которое является нормальным только для соединения сервер <-> 1 клиент

Я уже думал об этом. Можно все сузить до одного порта, и это меняется легко в коде. Надо скопипастить тред игрока и вставить в ресепшн тред. И в клиенте изменить порт получателя на тот же крневой. Вуаля, теперь мы не занимаем триллион портов на 1 машине.


Изменено пользователем Обязательное_поле

Поделиться сообщением


Ссылка на сообщение

ну вообще некоторый здравый смысл в использовании большого количества портов есть: операционная система накапливает пакеты отправленные на один порт в очереди, а когда эта очередь переполняется, то следующие пакеты отклоняются.

UDP же. Изначально дроп пакетов заложен в него.

Поделиться сообщением


Ссылка на сообщение

ну вообще некоторый здравый смысл в использовании большого количества портов есть: операционная система накапливает пакеты отправленные на один порт в очереди, а когда эта очередь переполняется, то следующие пакеты отклоняются.

есть, это было описано в статье которую ты кидал

если у него объём данных такой, что один юзер занимает 50%+ буффера удп, то тогда в реализации 1порт=1юзер есть смысл

 

в остальных случаях поток слушающий удп должен всего-лишь успевать разгребать поступаемые данные чтоб не переполнился буффер и складывать эти данные уже в памяти программы, а не один поток слушающий удп + обрабатывающий инфу

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...