public AudioBroadCast([NotNull] AudioStreaminServer server) { if (server == null) throw new ArgumentNullException(nameof(server)); Server = server; _broadCast = new BroadCast(server.Server); }
// 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()); }
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; } }
// 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); } }
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); }
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); } }
// ú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); } } }
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()); } }
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; } }
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); }