[SetNet & Console Application] Первые шаги. SetNet.PeerBase. Часть 2
Здравствуйте, сегодня мы продолжаем курс уроков о сетевом решении SetNet Server. И сегодня речь пойдет о классе клиента и обработке данных, которые принимаются от клиентов. Начнем.Создадим класс под названием «Peer» далее подключим пространства имен «SetNet» и унаследуем класс «Peer» от базового класса «PeerBase». Класс должен иметь следующий вид: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SetNet; using SetNet; namespace Server { class Peer: PeerBase { } } Теперь создадим конструктор класса «Peer». Он должен выгладить так: public Peer (ClientInfo info) : base (info) { } В данном случае конструктор принимает экземпляр класса ClientInfo в котором хранится информация о клиенте.Далее нужно реализовать абстрактный класс от «PeerBase» в последствии чего класс будет иметь вид:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SetNet;
namespace ServerTest { class Peer: PeerBase {
public override void ReceiveData (EventData data) { throw new NotImplementedException (); }
public override void ClientDisconected () { throw new NotImplementedException (); } } } В методе «ReceiveData» происходит взаимодействие с сообщениями с клиента.
Рассмотрим метод «ReceiveData»:
В классе «EventData» содержится код сообщения под названием «eventCode» который имеет тип «byte». За eventCode мы будем различать сообщения с клиента. «EventData» содержится Dictionary с названием «dic» в котором содержаться все переданные данные.throw new NotImplementedException (); можно удалить так как эта строчка не нужна. Она создается в последствии реализации абстрактного класса.
Рассмотрим взаимодействие с объектом «EventData» в методе «ReceiveData»:
Для начала нужно обработать событие. Для этого сделаем перебор:
switch (data.eventCode) { case 1: Console.WriteLine («Received message from the client with {0} eventCode. Message {1}», data.eventCode, data.dic[1].ToString ()); break; default: Console.WriteLine («Received unknown message from the client with {0} eventCode. Message {1}», data.eventCode, data.dic[1].ToString ()); break; } Здесь можно видеть перебор по коду сообщения и выводом. Далее создадим ответ сервера клиенту. Для этого нужно создать новый экземпляр класса «EventData» и зададим ему имя «response» перед конструктором класса. Далее в методе «ReceiveData» создадим ответ в «case 1».
EventData response = new EventData (1, new Dictionary
public override void ReceiveData (EventData data)
{
switch (data.eventCode)
{
case 1:
Console.WriteLine («Received message from the client with {0} eventCode. Message {1}», data.eventCode, data.dic[1].ToString ());
EventData response = new EventData (1, new Dictionary
Теперь метод будет выглядеть так:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SetNet;
namespace Server { public class GameServer: SetNet.Server { public GameServer () : base () { } public override void NewClient (ClientInfo info) { Peer peer = new Peer (info); } } } На этом данный урок закончен. Спасибо за внимание. Если остались вопросы — пишите на rebegin@list.ru или в скайп haker954.