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

Re: два сервера на photon

СообщениеДобавлено: 20 фев 2013, 19:27
kelod
типичный флуд пошёл....
вопрос был чётко поставлен, как соединить два сервера между собой, желательно по UDP, а сколько это стоит не кто не спрашивал, если не можете помочь не нужно бессмысленной писаниной загрязнять тему

Re: два сервера на photon

СообщениеДобавлено: 20 фев 2013, 23:09
maksimov
kelod писал(а):типичный флуд пошёл....
вопрос был чётко поставлен, как соединить два сервера между собой, желательно по UDP, а сколько это стоит не кто не спрашивал, если не можете помочь не нужно бессмысленной писаниной загрязнять тему


Намек: четкость постановки вопроса, виднее тем, кто знает на него ответ.
О стоимости(как аргументе, "объясняющем" осмысленность ваших вопросов) заговорили вы.
Предложенную вами "тему", ввиду её безграмотности, попросту невозможно ничем "загрязнить". =) А обзывать "бессмысленной писаниной" бескорыстную помощь посторонних людей - не очень вежливо.

Далее... "два сервера соединяются между собой по UDP" следующим образом:
Синтаксис:
Используется csharp
// Отправка сообщения
void SendMessage()
{
   UdpClient udp = new UdpClient();

   // Указываем адрес отправки сообщения
   IPAddress ipaddress = IPAddress.Parse(textBoxAddress.Text);
   IPEndPoint ipendpoint = new IPEndPoint(ipaddress, 15000);

   // Формирование оправляемого сообщения и его отправка.
   // Сеть "понимает" только поток байтов и ей безраличны
   // объекты классов, строки и т.п. Поэтому преобразуем текстовое
   /// сообщение в поток байтов.
   byte[] message = Encoding.Default.GetBytes(textBoxSend.Text);
   int sended = udp.Send(message, message.Length, ipendpoint);

   // Если количество переданных байтов и предназначенных для
   // отправки совпадают, то 99,9% вероятности, что они доберутся
   // до адресата.
   if(sended == message.Length)
   {
      // все в порядке
      textBoxSend.Text = "";
   }
     
   // После окончания попытки отправки закрываем UDP соединение,
   // и освобождаем занятые объектом UdpClient ресурсы.
   udp.Close();
}

// Запуск отдельного потока для приема сообщений
void StartReceive()
{
   rec = new Thread(new ThreadStart(Receive));
   rec.Start();
}

// Функция извлекающая пришедшие сообщения
// работающая в отдельном потоке.
void Receive()
{
   // При принудительном завершении работы метода
   // класса UdpClient Receive() и непредвиденных ситуациях
   // возможны исключения в этом месте исходного кода,
   // заключим его в блок try чтобы не появлялись окна ошибок.
   try
   {
      // Перед созданием нового объекта закрываем старый
      // для освобождения занятых ресурсов.
      if (udp != null) udp.Close();

      udp = new UdpClient(15000);
                 
      while (true)
      {

         IPEndPoint ipendpoint = null;
         byte[] message = udp.Receive(ref ipendpoint);
         textBox2.Text = Encoding.Default.GetString(message);

         // Если дана команда остановить поток, останавливаем бесконечный цикл.
         if (stopReceive == true) break;
      }  
                     
      udp.Close();
      }
      catch
     {
     }
}


// Функция безопасной остановки дополнительного потока
void StopReceive()
{
   // Останавливаем цикл в дополнительном потоке
   stopReceive = true;

   // Принудительно закрываем объект класса UdpClient
   if(udp != null) udp.Close();

   // Для корректного завершения дополнительного потока
   // подключаем его к основному потоку.
   if(rec != null) rec.Join();
}


Ещё вопросы?

Re: два сервера на photon

СообщениеДобавлено: 20 фев 2013, 23:22
kelod
maksimov писал(а):
kelod писал(а):Далее... "два сервера соединяются между собой по UDP" следующим образом:


но это же не в фотоне, вернее не его средствами, а мне нужно именно с помощью photon, я тут выяснил что нужно использовать вот это ApplicationBase::ConnectToServerTcp(Udp) но я не понимаю как, я понимаю как к серверу подключить кучу клиентов, но не знаю как другой сервер

Re: два сервера на photon

СообщениеДобавлено: 21 фев 2013, 13:10
maksimov
kelod писал(а):но это же не в фотоне,


Добавите этот код к своему расширению ФотонСервера - будет "в фотоне". У вас, "в фотоне".


kelod писал(а):вернее не его средствами,


"Его средства" вы отвергли ещё ранее. Вы написали, что не хотите "заворачиваться с ... распределенной нагрузкой и прочей фигнёй". Что у вас есть свое видение архитектуры распределения нагрузки по серверам.


kelod писал(а):а мне нужно именно с помощью photon,


Напишите письмо на этот электронный адрес: business@exitgames.com. В нем вежливо объясните, что хотели бы связать воедино несколько пакетов ФотонСервера, для того что бы вместо одной нормальной лицензии, использовать несколько бесплатных. Уверен, в следующей версии Photon Server они обязательно добавят для вас данный функционал, и вы сможете реализовать свою замечательную идею "именно с помощью photon".


kelod писал(а):я тут выяснил что нужно использовать вот это ApplicationBase::ConnectToServerTcp(Udp) но я не понимаю как, я понимаю как к серверу подключить кучу клиентов, но не знаю как другой сервер


Насколько я понимаю, это взаимодействие между серверами в рамках одного ФотонСервера(одна лицензия на обоих серверах).
Пример реализации распределения игрового сервера по нескольким физсерверам - приложение LoadBalancing(http://doc.exitgames.com/photon-server/LoadBalancing/).

Re: два сервера на photon

СообщениеДобавлено: 21 фев 2013, 21:25
kelod
maksimov писал(а):
kelod писал(а):но это же не в фотоне,


Добавите этот код к своему расширению ФотонСервера - будет "в фотоне". У вас, "в фотоне".



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

Re: два сервера на photon

СообщениеДобавлено: 22 фев 2013, 04:30
gnoblin
два фотон-сервера можно общать друг с другом через специальное встроенное апи по tcp

но это не главное - потому что архитектура фотона уже заранее подразумевает разделение инстансов сервера на master server и несколько game servers (так работает photon cloud, так можно организовать работу и в своем приложении - насколько я понимаю через lite lobby).

в целом предлагаю автору использовать просто photon cloud )

Re: два сервера на photon

СообщениеДобавлено: 22 фев 2013, 18:07
kelod
gnoblin писал(а):два фотон-сервера можно общать друг с другом через специальное встроенное апи по tcp

но это не главное - потому что архитектура фотона уже заранее подразумевает разделение инстансов сервера на master server и несколько game servers (так работает photon cloud, так можно организовать работу и в своем приложении - насколько я понимаю через lite lobby).

в целом предлагаю автору использовать просто photon cloud )

я использую photon server? он болле гибкий и больше возможностей, с сервером я кажется разобрался, не понятно как организовать клиентское соединение на сервере, т.е. что бы сервер выступал в качестве клиента

Re: два сервера на photon

СообщениеДобавлено: 22 фев 2013, 18:34
seaman
Вы это все видели?
ЮТУБ

Re: два сервера на photon

СообщениеДобавлено: 22 фев 2013, 18:54
maksimov
kelod писал(а):в фотоне то будет, но фотон для того и используют что бы не изобретать велосипед, а вы мне предлагаете прикручивать очередное колесо


Изобретать велосипеды - это была ваша идея. Это вы захотели строить свою архитектуру, взамен тем, которые предлагает ExitGame.
Это уже не говоря о том, что изобретаемый вами велосипед - с квадратными колесами. О чем вам уже попытались несколько раз намекнуть ваши собеседники.


kelod писал(а):а вы мне предлагаете прикручивать очередное колесо


Я ничего вам не предлагал. Я ответил на ваш вопрос(вы спросили, как связывать два компьютера по UDP - я вам показал).


kelod писал(а):что бы сервер выступал в качестве клиента


Занавес.
Еще раз(сосредоточьтесь!): реализация распределения ФотонСерверного приложения по нескольким физическим серверам, описана тут: http://doc.exitgames.com/photon-server/LoadBalancing/. Вы её смотрели? Что в ней вам осталось непонятным?

cibersant, ещё неделю назад вам написал: "клиент это клиент, а сервер это сервер".
Мне остается только повторить вам его слова.(может хоть на этот раз вы нам поверите)

Re: два сервера на photon

СообщениеДобавлено: 22 фев 2013, 19:02
maksimov
gnoblin писал(а):потому что архитектура фотона уже заранее подразумевает разделение инстансов сервера на master server и несколько game servers (так работает photon cloud, так можно организовать работу и в своем приложении - насколько я понимаю через lite lobby).


Не совсем. Распределение по серверам у них вынесено в приложение, и примером такой реализации является Loadbalancing(покомнатность в котором, в свою очередь, реализована на основе Lite). На PhotonCloud у них, как я понял, запущен конгломерат всех четырех приложений, поставляемых в качестве примеров, в Server SDK.

Re: два сервера на photon

СообщениеДобавлено: 22 фев 2013, 22:48
kelod
seaman писал(а):Вы это все видели?
ЮТУБ

да я это смотрел, но там на английском, я разговорный не так хорошо понимаю

Re: два сервера на photon

СообщениеДобавлено: 22 фев 2013, 22:51
kelod
maksimov писал(а):
kelod писал(а):что бы сервер выступал в качестве клиента


Занавес.
Еще раз(сосредоточьтесь!): реализация распределения ФотонСерверного приложения по нескольким физическим серверам, описана тут: http://doc.exitgames.com/photon-server/LoadBalancing/. Вы её смотрели? Что в ней вам осталось непонятным?

cibersant, ещё неделю назад вам написал: "клиент это клиент, а сервер это сервер".
Мне остается только повторить вам его слова.(может хоть на этот раз вы нам поверите)

а вы то сами внимательно читали документацию , что мне подсовываете?? там чётко написано что есть мастер сервер и к нему подключаются игровые сервера , в итоге получается что игровые сервера становятся клиентами для мастер серверу
мне не понятно как там осуществляется подклюxение GameServer к Master Server

Re: два сервера на photon

СообщениеДобавлено: 22 фев 2013, 23:31
seaman
мне не понятно как там осуществляется подклюxение GameServer к Master Server

1. The Game Servers call the RegisterGameServer operation once after they are connected to the Master Server.
2. Afterwards, the Game Server publishes all existing game states to the master server:
This is done by sending a message to each Game that tells it to send it’s game state to the master
The Game handles this in the ProcessMessage method and calls the UpdateGameStateOnMaster method to send an UpdateGameEvent to the master
The game state is also updated on the master whenever a game is created, joined or left by a client or its properties are changed.
Примеры кода присутствуют.
ЗЫ: GameЫerver - не клиент для MasterServer

Re: два сервера на photon

СообщениеДобавлено: 08 авг 2014, 09:18
NTrix
Вообще, по поводу соединение Server-To-Server все очень хорошо описано на сайте exitgames.com.

Я делал также, никаких проблем, все идеально работает.

http://doc.exitgames.com/en/onpremise/c ... troduction