Страница 1 из 1

задачка :)

Добавлено: 27 ноя 2007, 09:23
aissp
дано - пару сотен клиентов каждый из которых имеет коннект на некий сервер
необходимо - в систему зашел очередной клиент и присоединился на сервер, ему необходимо дать параметры присоединенного к серверу клиента с лучшими характеристиками связи между ними.

Измерения пинга для каждого из клиента хотелось бы избежать. Статистику (какую) можно накапливать после присоединения клиентов.

Сдается мне что ета задача уже решена и есть готовые базы данных и программное обеспечение. купить в обзем то не проблема. Идеи тоже принимаются. Если что тонепонятно готов дать дополнительные разъяснения.

Re: задачка :)

Добавлено: 27 ноя 2007, 10:40
папа Карло
это тебе надо с народом из Электроник Артс поговорить.... стандартная байда для игрушек. :)

Re: задачка :)

Добавлено: 28 ноя 2007, 17:41
vti
Если сервер на Линухе, то есть 2 варианта:

1) Socket option TCP_INFO возвращает структуру tcp_info где много чего интересного про сокет есть включая RTT, количество ретрансмитов, количество потерянных пакетов и т.д..

2) Анализировать /proc/net/tcp как это делает 'netstat'. Но инфы гораздо меньше чем при (1).


Для других юниксов и форточек аналогичной функциональности не знаю. В BSD есть sysctl TCPCTL_STATS, но он дает инфу о TCP протоколе в целом. Тоже самое в Виндоус если использовать этот способ http://www.codeproject.com/internet/winnetstat.asp Но если я правильно понял, это не то что Вам надо.

Re: задачка :)

Добавлено: 28 ноя 2007, 17:46
sz
aissp писал(а):дано - пару сотен клиентов каждый из которых имеет коннект на некий сервер
необходимо - в систему зашел очередной клиент и присоединился на сервер, ему необходимо дать параметры присоединенного к серверу клиента с лучшими характеристиками связи между ними.

Измерения пинга для каждого из клиента хотелось бы избежать. Статистику (какую) можно накапливать после присоединения клиентов.

Сдается мне что ета задача уже решена и есть готовые базы данных и программное обеспечение. купить в обзем то не проблема. Идеи тоже принимаются. Если что тонепонятно готов дать дополнительные разъяснения.
В стандартной сишной библиотеке есть нужная тебе функция:
rand()
Работает очень быстро и задачу, в целом, решает.

Re: задачка :)

Добавлено: 28 ноя 2007, 19:12
aissp
vti - от спасибо за напоминание, она правда к другой области приложиться, но все равно скромное человеческое спасибо :)

sz - вот предложил папа обратиться к електроник артс :) вот и ответ не заржавел.

Re: задачка :)

Добавлено: 28 ноя 2007, 19:31
Marmot
А чо, если просто послать маленький спец-message клиенту чтобы он его сразу назад отразил и примитивно померить round-trip time.
И так нескольро раз подряд :). Я в свое время так и делал, время почти в точности соответсвует времени пинга, если сервер и клиент не очень заняты...

Re: задачка :)

Добавлено: 29 ноя 2007, 07:22
aissp
Долго и клиентов жалко, не понятно новый клиент он кароший или плохой с ним разберуться после коннекта а вот разрешать ему слать пакеты на всех участнегов низзя - не кошерно :)