public AudioBroadCast([NotNull] AudioStreaminServer server)
        {
            if (server == null) throw new ArgumentNullException(nameof(server));

            Server = server;
            _broadCast = new BroadCast(server.Server);
        }
Beispiel #2
0
 // vrátí všechny možné adresy pomocí netmask a broadcastu
 public IPAddress[] PosibleAddresses()
 {
     if (PosibleAddresesList != null)
     {
         return(PosibleAddresesList.ToArray());
     }
     PosibleAddresesList = new List <IPAddress>();
     byte[] broadcast = BroadCast.GetAddressBytes();
     byte[] network   = NetworkAddr.GetAddressBytes();
     for (int oct1 = network[0]; oct1 <= broadcast[0]; oct1++)
     {
         for (int oct2 = network[1]; oct2 <= broadcast[1]; oct2++)
         {
             for (int oct3 = network[2]; oct3 <= broadcast[2]; oct3++)
             {
                 for (int oct4 = network[3]; oct4 <= broadcast[3]; oct4++)
                 {
                     PosibleAddresesList.Add(new IPAddress(new byte[] { (byte)oct1, (byte)oct2, (byte)oct3, (byte)oct4 }));
                 }
             }
         }
     }
     PosibleAddresesList.RemoveAt(0);
     PosibleAddresesList.RemoveAt(PosibleAddresesList.Count - 1);
     return(PosibleAddresses());
 }
Beispiel #3
0
 public void Binds(flow f)
 {
     Di = BroadCast.LinkTo(f.m_buffer, new DataflowLinkOptions()
     {
         PropagateCompletion = true
     });
 }
    public void Update()
    {
        try
        {
            NetworkController.Instance.ProcessMessages();
        }
        catch (Exception e)
        {
            Debug.LogError(e);
        }

        if (NextFrameAction != null)
        {
            Debug.Log("Run NextFrameAction");
            NextFrameAction();
            NextFrameAction = null;
            BroadCast bc = new BroadCast();
            bc.P        = this.InitP;
            bc.Pid      = this.PlayerID;
            bc.Username = this.PlayerName;
            bc.Tp       = 2;
            GameEventManager.OnMove(bc);
        }
        if (Input.GetKeyDown(KeyCode.Tab))
        {
            LockMouse = !LockMouse;
        }
    }
Beispiel #5
0
 // It get executed when the event fired by the Publisher
 void P_EventTicked(SingletonPublisherClass P, BroadCast e)
 {
     Console.WriteLine("Current Page: " + e.Page_Number + " at " + e.BroadCast_Date);
     if (instance != null)
     {
         instance.bookmark(e.Page_Number);
     }
 }
Beispiel #6
0
 void OnMove(BroadCast bc)
 {
     if (bc.Pid == MID)
     {
         mBc          = bc;
         InitComplite = true;
     }
 }
    private void OnNewPlayer(BroadCast bc)
    {
        Player player = new Player();

        player.P        = bc.P;
        player.Pid      = bc.Pid;
        player.Username = bc.Username;
        this.AddOnePlayerToScene(player);
    }
Beispiel #8
0
 void OnMoveFunction(BroadCast bc)
 {
     if (PlayerID == bc.Pid)
     {
         mBc       = bc;
         CanMove   = true;
         CanRotate = true;
         // playerControl.Move(new Vector3(bc.P.X, transform.position.y, bc.P.Y));
     }
 }
 private void OnMove(BroadCast obj)
 {
     //完成当前玩家的移动
     //因为当前玩家是这个世界的主角
     //只接受第一次的报文,将玩家放到出生点
     if (_initPosState == 0)
     {
         this.InitPos  = new Vector4(obj.P.X, obj.P.Y, obj.P.Z, obj.P.V);
         _initPosState = 1;
         this.HP       = obj.P.BloodValue;
         Debug.Log("Get HP:" + obj.P.BloodValue);
     }
 }
Beispiel #10
0
        // útok man in the middle (TODO nějak zařídit routování packetů co přijdou)
        public void MITM()
        {
            // pokus o todo
            new Thread(new ThreadStart
                       (
                           delegate()
            {
                using (PacketCommunicator pc = Device.Open(65536, PacketDeviceOpenAttributes.Promiscuous, 1000))
                {
                    var result = pc.ReceivePacket(out Packet p);
                    if (result == PacketCommunicatorReceiveResult.Ok)
                    {
                        if (UIntToIp(p.Ethernet.IpV4.Destination.ToValue()).ToString() == DefaultGw.ToString() || InNetwork(UIntToIp(p.Ethernet.IpV4.Destination.ToValue())))
                        {
#if DEBUG
                            Console.WriteLine("foreign packet");
#endif
                            p.Ethernet.GetType().GetProperty("Destionation").SetValue(p.Ethernet, new MacAddress(Devices.First(x => x.IpAddr.ToString() == DefaultGw.ToString()).HardwareAddrString));
                        }
                    }
                }
            }
                       ));
            using (PacketCommunicator pc = Device.Open(65536, PacketDeviceOpenAttributes.Promiscuous, 1000))
            {
                while (true)
                {
                    Packet p = PacketBuilder.Build
                               (
                        DateTime.Now,
                        new EthernetLayer
                    {
                        EtherType   = EthernetType.None,
                        Destination = new MacAddress("ff:ff:ff:ff:ff:ff"),
                        Source      = new MacAddress(PhysicalAddrString)
                    },
                        new ArpLayer
                    {
                        Operation             = ArpOperation.Reply,
                        ProtocolType          = EthernetType.IpV4,
                        SenderHardwareAddress = Array.AsReadOnly(PhysicalAddr.GetAddressBytes()),
                        SenderProtocolAddress = Array.AsReadOnly(DefaultGw.GetAddressBytes()),
                        TargetHardwareAddress = Array.AsReadOnly(new byte[] { 255, 255, 255, 255, 255, 255 }),
                        TargetProtocolAddress = Array.AsReadOnly(BroadCast.GetAddressBytes())
                    }
                               );
                    pc.SendPacket(p);
                    Thread.Sleep(5000);
                }
            }
        }
        public override void OnReceive(object message)
        {
            if (message is AbstractMessage)
            {
                ExchangeClient client = endpoint as ExchangeClient;

                if (message is Response)
                {
                    Response         response = message as Response;
                    UnityClientEvent evt      = new UnityClientEvent(Convert.ToString(response.Id), response.Content);
                    evt.Success   = (response.ErrorCode == Response.OK);
                    evt.ErrorCode = response.ErrorCode;
                    evt.ErrorDes  = response.ErrorDes;
                    client.Parent.Dispatch(evt);
                }
                else if (message is Push)
                {
                    Push             push = message as Push;
                    UnityClientEvent evt  = new UnityClientEvent(Convert.ToString(push.Id), push.Content);
                    evt.Sender = push.Identity;
                    client.Parent.Dispatch(evt);
                }
                else if (message is BroadCast)
                {
                    BroadCast        broadcast = message as BroadCast;
                    UnityClientEvent evt       = new UnityClientEvent(Convert.ToString(broadcast.Id), broadcast.Content);
                    evt.Sender = broadcast.Identity;
                    client.Parent.Dispatch(evt);
                }
            }
            else
            {
                if (message is HandSnakeResp)
                {
                    HandlerHandSnakeResp((HandSnakeResp)message);
                }
                else if (message is HeartBeatResp)
                {
                    HandlerHeatBeatResp((HeartBeatResp)message);
                }
                else if (message is KickClient)
                {
                    HandlerKickClient((KickClient)message);
                }
            }
        }
Beispiel #12
0
 private void OnMove(BroadCast bc)
 {
     if (bc.Pid == this.Pid)
     {
         this.HP = bc.P.BloodValue;
         //坐标改变了
         this.transform.rotation = Quaternion.Euler(0, bc.P.V, 0);
         //先判断一下目的地离当前位置的距离,如果很大,那么就使用协程每一帧都自动生成一个平滑的移动
         mTargetPos = new Vector3(bc.P.X, bc.P.Y, bc.P.Z);
         //每次启动协程之前先停止一下上一次的协程
         if (this.movingCoroutine != null)
         {
             StopCoroutine(movingCoroutine);
         }
         this.movingCoroutine = StartCoroutine(MoveLogic());
     }
 }
Beispiel #13
0
    private void MessageDispatch(int messageId, byte[] packetData)
    {
        Protocol protocolId = (Protocol)messageId;

        Debug.Log("New Message : " + messageId);
        switch (protocolId)
        {
        case Protocol.GAME_MSG_LOGON_SYNCPID:    //syncpid 玩家出生同步pid和姓名
        {
            SyncPid sync = SyncPid.Parser.ParseFrom(packetData);
            GameEventManager.OnLogon(sync.Pid, sync.Username);
            //将自己存到List里边
            break;
        }

        case Protocol.GAME_MSG_BROADCAST:    //广播消息
        {
            BroadCast bc = BroadCast.Parser.ParseFrom(packetData);
            if (bc.Tp == 1)
            {
                //聊天消息
                if (bc.Content != null)
                {
                    GameEventManager.OnNewChatMessage(bc.Pid, bc.Username, bc.Content);
                }
            }
            else if (bc.Tp == 2)
            {
                //新的位置消息
                GameEventManager.OnNewPlayer(bc);
                GameEventManager.OnMove(bc);
            }
            if (bc.Tp == 4)        //tp 为4,表明玩家在移动
            {
                GameEventManager.OnMove(bc);
            }
            break;
        }

        case Protocol.GAME_MSG_LOGOFF_SYNCPID:
        {
            SyncPid sync = SyncPid.Parser.ParseFrom(packetData);
            if (GameEventManager.OnOver != null)
            {
                Debug.Log("net manager OnOver trigger : " + sync.Pid);
                GameEventManager.OnOver(sync.Pid);
            }
            break;
        }

        case Protocol.GAME_MSG_SUR_PLAYER:
        {
            //刚开始上线的时候获取周围玩家的列表
            SyncPlayers      players  = SyncPlayers.Parser.ParseFrom(packetData);
            List <Pb.Player> lPlayers = new List <Pb.Player>();
            foreach (var player in players.Ps)
            {
                lPlayers.Add(player);
            }
            GameEventManager.OnNewPlayers(lPlayers);
            break;
        }

        case Protocol.GAME_MSG_CHANGE_WORLD_RESPONSE:
        {
            var res = ChangeWorldResponse.Parser.ParseFrom(packetData);
            Debug.Log("ChangWorld response : " + res.ChangeRes);
            if (GameEventManager.OnChangeWorldResponse != null)
            {
                GameEventManager.OnChangeWorldResponse(res);
            }
            break;
        }

        case Protocol.GAME_MSG_SKILL_BROAD:
        {
            var res = SkillTrigger.Parser.ParseFrom(packetData);
            if (GameEventManager.OnSkillTrigger != null)
            {
                GameEventManager.OnSkillTrigger(res);
            }
            break;
        }

        case Protocol.GAME_MSG_SKILL_CONTACT_BROAD:
        {
            var res = SkillContact.Parser.ParseFrom(packetData);
            if (GameEventManager.OnSkillContact != null)
            {
                GameEventManager.OnSkillContact(res);
            }
            break;
        }

        default:
            break;
        }
    }
Beispiel #14
0
 public static void BornPlayer(BroadCast bc)
 {
     mBc  = bc;
     flag = true;
 }
        public object Decode(Remoting.Channel ch, Packet packet)
        {
            BinaryDataInput input = new BinaryDataInput(packet.Content);
            int             type  = packet.Header.Type;

            if (type == Packet.FLAG_HANDSNAKE)
            {
                HandSnakeResp resp = new HandSnakeResp();
                resp.DeserializeTo(input);
                return(resp);
            }
            else if (type == Packet.FLAG_HEARTBEAT)
            {
                HeartBeatResp req = new HeartBeatResp();
                req.DeserializeTo(input);
                return(req);
            }
            else if (type == Packet.FLAG_KICK)
            {
                KickClient kick = new KickClient();
                kick.DeserializeTo(input);
                return(kick);
            }
            else if (type == Packet.FLAG_MESSAGE)
            {
                int  mid   = input.ReadInt();
                byte mType = input.ReadByte();
                if (mType == AbstractMessage.TYPE_RESPONSE)
                {
                    Response response = new Response(mid);
                    response.Sequence  = input.ReadInt();
                    response.ErrorCode = input.ReadInt();
                    response.ErrorDes  = input.ReadUTF();
                    if (response.ErrorCode == Response.OK)
                    {
                        ResponseArg respArg = ResponseMappingInfo.Instance.CreateResponseMapping(mid) as ResponseArg;
                        if (respArg == null)
                        {
                            log.Error("Failed to handle response message,Cause : Cloud not found response mapper id :" + mid);
                        }
                        respArg.DeserializeTo(input);
                        response.Content = respArg;
                    }
                    return(response);
                }
                else if (mType == AbstractMessage.TYPE_PUSH)
                {
                    Push push = new Push(mid);
                    push.Identity = input.ReadInt();
                    ResponseArg respArg = ResponseMappingInfo.Instance.CreateResponseMapping(mid) as ResponseArg;
                    if (respArg == null)
                    {
                        log.Error("Failed to handle push message,Cause : Cloud not found response mapper id :" + mid);
                    }
                    respArg.DeserializeTo(input);
                    push.Content = respArg;
                    return(push);
                }
                else if (mType == AbstractMessage.TYPE_BROADCAST)
                {
                    BroadCast broadcast = new BroadCast(mid);
                    broadcast.Identity = input.ReadInt();
                    ResponseArg respArg = ResponseMappingInfo.Instance.CreateResponseMapping(mid) as ResponseArg;
                    if (respArg == null)
                    {
                        log.Error("Failed to handle broadcast message,Cause : Cloud not found response mapper id :" + mid);
                    }
                    respArg.DeserializeTo(input);
                    broadcast.Content = respArg;
                    return(broadcast);
                }
            }
            return(null);
        }