Найти - Пользователи
Полная версия: Создание сервера с неограниченым числом подключений
Начало » Network » Создание сервера с неограниченым числом подключений
1 2 3 4 5
Alex_Kutsan
Запустил сервер, обнаружил ощибку сдесь conect.recv() Оказываебтся так нельзя. Не думал даже что сервер не может просто слушать соеденение. Вобще думаю проблему можно опять же решить большим кол-вом тредов. Чтоб Тред принимал данные от клиента, и сразу закрывался. Таким оразом опять же. идеально проблема не решится, НО, вероятность что 1021 будут сидеть и нихрена не делать, а только пялится в монитор не так уж и велика. Как только клиент отправит сообщение тред освободится для другого клиента. Хммм. да что я тут демагогию развожу, вот код:
def get_sms(sub):
global sms
sms = sub.recv(1024)
if sms:
for x in users:
x[].send(sms)
while 1:
for x in users:
thread.start_new(get_sms,(x[0]))
Или может кто-то подскажет ещё какие способы прослушивать весь порт целиком?
Ed
CryptSpirit
Если вы читали посты выше основная проблема создание тредов. В этом ограничение.
Эй, а чем мое решение не устроило-то? Или вы его пропустили? Я же написал - там под 3000 соединений открылось и обломался ваш клиент для крэш-тестов, сервер бы еще принимал и принимал. Я что-то пропустил?
CryptSpirit
Ваш пример Ed подходит. Я писал про код Alex_Kutsan. Сервер в моем случае очередь строить не должен. Нужно сервер онлайн игрухи а не чат
Lexander
Я вот подумал: а что это а игра, в которой нужно поддержать такое кол-во одновременно играющих клиентов?
Они все в одной локации (или комнате) или одновременно решают одну и ту же задачу?
А как они будут отображаться на клиентах? Ведь их клиентские компьютеры просто загнуться с выводом такого кол-ва информации. Причем вместе со своим сетевым интерфейсом, пытающимся получить информацию обо всех этих тысячах других игроков.
Что-то я сомневаюсь в правильности выбора архитектуры…
CryptSpirit
Lexander
а что это а игра
Мне не хватит сил все рассказать. Но пару моментов просвещу
Lexander
поддержать такое кол-во одновременно играющих клиентов
Ну нпс на локации игрока будут просчитываться трэдом подключения. Да и дело не в том сколько людей будет играть онлайн, а в том что бы создать основу (сервер) который как совковые пионеры должен быть всегда готов.
Lexander
Ведь их клиентские компьютеры просто загнуться с выводом такого кол-ва информации. Причем вместе со своим сетевым интерфейсом, пытающимся получить информацию обо всех этих тысячах других игроков.
И зачем их клиентам так много информации. Клиент если честно будет работать по правилу меньше знаешь лучше спишь.
Lexander
Что-то я сомневаюсь в правильности выбора архитектуры…
Я тоже. Потому то сейчас и выбираю)))))
o7412369815963
если все подключения будут через один хост, то “конект-шлюз” написать на с++, который будет раскидывать конекты по хостам (распределение нагрузки), а все остальное на питоне ибо он проще, и на нем разработка будет быстрее.
а вообще лучше сразу делать распределенную систему - нехватает ресурсов, воткнул ещё сервак и порядок. с таким кол-вом клиентов все равно одного хоста не хватит(за исключением того если хостить чат или тетрис)
Lexander
CryptSpirit
И зачем их клиентам так много информации. Клиент если честно будет работать по правилу меньше знаешь лучше спишь.
Собрались 500 человек и зашли в одну комнату. И все.
Сообщать каждому клиенту о передвижениях других игроков надо? Надо. Вот вам нагрузка на сеть.
Отрисовывать клиентам передвижения других игроков надо? Надо, ведь в одной локации находятся все 500. Вот вам нагрузка на процессор, память и видео.
Что делать будете?
CryptSpirit
o7412369815963
а вообще лучше сразу делать распределенную систему
Уже как сутки делаю)
Lexander
Сообщать каждому клиенту о передвижениях других игроков надо?
Не вижу здесь проблемы
Lexander
Отрисовывать клиентам передвижения других игроков надо?
У меня графика будет просто ( хочется ретро типа старика первого и дьябло второго, но конечно покрасивше)
Lexander
Вот вам нагрузка на процессор, память и видео.
Подобное будет сбалансировано между клиентом и сервером.
Lexander
Что делать будете?
Конечно же это все мои слова не известно как оно все будет. Но если в крации что уже планируется:
Открытый клиент с простой графикой (о ней я уже говорил) и управлением сродни доте и т. д..
Тоесть кто захочет тот и допишит что надо еще и выложит на офсайте (если захочет)
Вобщем задумка не сколько сервера, а игры. Собственно ради одной задумки и ковыряемся. саморазвивающаяся игра. Где игрок может стать богом и вершить судьбу мира (катаклизмы, рельеф…). А до этого он должен бегать простым героем. Уровней нет есть только статы. Что хош то и делай. Стиль фентези. Амбиций может и не хватить но идея игры уже не первый год мучит. Пора побывать реализовывать.
Alex2ndr
CryptSpirit
Сообщать каждому клиенту о передвижениях других игроков надо?

Не вижу здесь проблемы
Проблема простая. Каждая передача от одного клиента к другому инфы это трафик. Вам намекают на то, что вы раньше уткнетесь в пропускную способность канала, нежели в ограничение на количество подключений.

Впрочем это все голая теория. Разработку игры имхо надо начинать не с сетевого сервера, способного обслужить более 1000 клиентов, а с сюжета, концепции и тд. Так что вам до сетевых проблем еще как до луны… Вот когда они будут тогда и будете думать - а зря голову ломать не стоит… Все это имхо.
CryptSpirit
Alex2ndr
Разработку игры имхо надо начинать не с сетевого сервера, способного обслужить более 1000 клиентов, а с сюжета
CryptSpirit
если в крации
CryptSpirit
задумка не сколько сервера, а игры
Игра крутиться в голове не первый год (от сюдого продумано множество деталей).
Alex2ndr
одного клиента к другому
боже какой изврат. Сложно и долго объяснять что будет вместо этого. Но поверьте. Я ни сел с бухты барахты писать игру. К этому подхожу осторожно и основательно. Желание очень сильное. И идей полный чемодан.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB