示例#1
0
 public WifiHandler()
 {
     this.context         = Android.App.Application.Context;
     _connectivityManager = Application.Context.GetSystemService(Context.ConnectivityService) as ConnectivityManager;
     _callback            = new NetworkCallback
     {
         NetworkAvailable = network =>
         {
             // we are connected!
             _callbackStatus = $"Requested network connected";
             _connectivityManager.BindProcessToNetwork(network);
             Static.RuntimeSettings.IsWifiRequestingFinished = true;
         },
         NetworkUnavailable = () =>
         {
             _callbackStatus = $"Requested network unavailable";
             Static.RuntimeSettings.IsWifiRequestingFinished = true;
         },
         NetworkLost = network =>
         {
             _callbackStatus = $"Requested network lost";
             _connectivityManager.BindProcessToNetwork(null);
             _connectivityManager.UnregisterNetworkCallback(_callback);
         }
     };
 }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activity_main);

            var requestButton = FindViewById <Button>(Resource.Id.buttonRequest);
            var suggestButton = FindViewById <Button>(Resource.Id.buttonSuggest);

            _statusText = FindViewById <TextView>(Resource.Id.statusText);
            _ssid       = FindViewById <EditText>(Resource.Id.ssid);
            _passphrase = FindViewById <EditText>(Resource.Id.passphrase);

            requestButton.Click += (s, e) => RequestNetwork();
            suggestButton.Click += (s, e) => SuggestNetwork();

            _callback = new NetworkCallback
            {
                NetworkAvailable = network =>
                {
                    // we are connected!
                    _statusText.Text = $"Request network available";
                },
                NetworkUnavailable = () =>
                {
                    _statusText.Text = $"Request network unavailable";
                }
            };
        }
示例#3
0
    static IEnumerator HandlePackage()
    {
        while (connected)
        {
            lock (packageQueue)
            {
                if (packageQueue.Count > 0)
                {
                    Package package = packageQueue.Dequeue();
                    if (callbackDict.ContainsKey(package.type))
                    {
                        List <NetworkCallback> callbackList = callbackDict[package.type];

                        for (int i = callbackList.Count - 1; i >= 0; i--)
                        {
                            NetworkCallback callback = callbackList[i];
                            callback.func(package.data);
                            if (callback.isDelete)
                            {
                                callbackList.RemoveAt(i);
                            }
                        }
                    }
                }
            }
            yield return(null);
        }
        DisconnectedUI.Show();
    }
    public void CalculatePoints()
    {
        List <int> allPoints = new List <int>();
        int        highestPoints;

        for (int i = 0; i < NetworkCallback.GetPlayers().Count; i++)
        {
            allPoints.Add(NetworkCallback.GetPlayers()[i].GetComponent <NetworkPlayer>().GetPoints());
            // if (player.playerState != null)
            //{

            highestPoints = Mathf.Max(allPoints.ToArray());
            Debug.Log(highestPoints);

            /*
             * if (player.playerState.PlayerScore >= highestScore)
             *  {
             *      highestScore = player.playerState.PlayerScore;
             *      highestScoringPlayer = player.networkPlayer;
             *      highestScoringPlayerState = player.playerState;
             *  }
             */
            //}
        }
    }
示例#5
0
 public void Send(byte[] byteData, NetworkCallback sendCallback)
 {
     // Begin sending the data to the remote device.
     this.secondCallback = sendCallback;
     client.BeginSend(byteData, 0, byteData.Length, 0,
                      new AsyncCallback(SendCallback), this.client);
 }
    // Update is called once per frame
    void FixedUpdate()
    {
        if (NetworkCallback.GetPlayers()[0])
        {
            if (NetworkCallback.GetPlayers()[0].GetComponent <NetworkPlayer>().isVictory)
            {
                diceButton.GetComponent <Button>().interactable = false;
            }
        }
        if (NetworkCallback.GetPlayers()[1])
        {
            if (NetworkCallback.GetPlayers()[1].GetComponent <NetworkPlayer>().isVictory)
            {
                diceButton.GetComponent <Button>().interactable = false;
            }
        }


        /*
         * Debug.LogWarning(NetworkCallback.GetPlayers()[0].GetComponent<NetworkPlayer>().transform.position);
         * if(NetworkCallback.GetPlayers().Count == 2)
         *  Debug.LogWarning(NetworkCallback.GetPlayers()[1].GetComponent<NetworkPlayer>().transform.position);
         * /*
         * for (int i = 0; i < NetworkCallback.GetPlayers().Count; i++)
         * {
         *  if (NetworkCallback.GetPlayers().Where(c => c.GetComponent<NetworkPlayer>().isReady).Count() == 0) {
         *      for (int j = 0; j < NetworkCallback.GetPlayers().Count; j++)
         *      {
         *          diceButton.GetComponent<Button>().interactable = true;
         *      }
         *  }
         *  Debug.Log(NetworkCallback.GetPlayers().Where(c => c.GetComponent<NetworkPlayer>().isReady).Count());
         * }
         */
    }
示例#7
0
        public bool  ConnectAsyn(string host, int port)
        {
            IPAddress addr;

            if (!IPAddress.TryParse(host, out addr))
            {
                return(false);
            }

            sock         = new TcpClient();
            sock.NoDelay = true;
            sock.BeginConnect(addr, port, (ar) =>
            {
                TcpClient client = (TcpClient)ar.AsyncState;
                client.EndConnect(ar);
                if (client.Connected)
                {
                    this.status = NetworkState.Connected;
                }
                else
                {
                    this.status = NetworkState.DisConnected;
                }

                NetworkCallback temp = ConnectCompleted;
                if (temp != null)
                {
                    temp(new NetWorkArgs(client.Connected?NetworkState.Connected:NetworkState.DisConnected));
                }
            }, sock);
            this.status = NetworkState.Connecting;
            return(true);
        }
示例#8
0
        public static void Receive(Socket socket, byte[] buffer, int offset, int count, object state,
                                   NetworkCallback callback)
        {
            var data = Cache.Get().Init(socket, buffer, offset, count, callback, state);

            ReceiveBase(data);
        }
示例#9
0
 public void RemoveCallBack(int type, NetworkCallback callback)
 {
     if (callbackDic.ContainsKey(type))
     {
         callbackDic[type] -= callback;
     }
 }
示例#10
0
        public static void Send(Socket socket, byte[] buffer, int offset, int count, object state,
                                NetworkCallback callback)
        {
            NetworkState data = Cache.Get().Init(socket, buffer, offset, count, callback, state);

            SendBase(data);
        }
示例#11
0
        public async void ConnectToWifi(string ssid, string password)
        {
            if (Android.OS.Build.VERSION.SdkInt < Android.OS.BuildVersionCodes.Q)
            {
                var formattedSsid     = $"\"{ssid}\"";
                var formattedPassword = $"\"{password}\"";

                var wifiConfig = new WifiConfiguration
                {
                    Ssid         = formattedSsid,
                    PreSharedKey = formattedPassword
                };

                var wifiManager = (WifiManager)Android.App.Application.Context
                                  .GetSystemService(Context.WifiService);

                var addNetwork = wifiManager.AddNetwork(wifiConfig);
                var network    = new WifiConfiguration();

                IList <Android.Net.Wifi.WifiConfiguration> networks = wifiManager.ConfiguredNetworks.ToList <WifiConfiguration>();
                foreach (var n in networks)
                {
                    Console.WriteLine($"Config Networks: {n.Bssid}");
                    if (n.Ssid == formattedSsid)
                    {
                        network = n;
                    }
                }

                if (network == null)
                {
                    Console.WriteLine($"Cannot connect to network: {ssid}");
                    return;
                }

                wifiManager.Disconnect();
                var enableNetwork = wifiManager.EnableNetwork(network.NetworkId, true);
                wifiManager.Reconnect();

                await Application.Current.MainPage.DisplayAlert("Failed to connect", ssid, "OK");
            }
            else
            {
                WifiNetworkSpecifier.Builder builder          = new WifiNetworkSpecifier.Builder();
                WifiNetworkSpecifier         networkSpecifier = builder
                                                                .SetSsid(ssid)
                                                                .SetWpa2Passphrase(password)
                                                                .Build();

                NetworkRequest.Builder networkRequest = new NetworkRequest.Builder();
                networkRequest
                .SetNetworkSpecifier(networkSpecifier)
                .Build();

                ConnectivityManager connectivityManager = (ConnectivityManager)Android.App.Application.Context.GetSystemService(Context.ConnectivityService);

                NetworkCallback networkCallback = new NetworkCallback(connectivityManager);
            }
        }
示例#12
0
 public recvObject(byte[] b, int o, int size, NetworkStream s, NetworkCallback c)
 {
     this.buff     = b;
     this.offet    = o;
     this.size     = size;
     this.stream   = s;
     this.callback = c;
 }
 public void RegisterCallback(int id, NetworkCallback <T> callback)
 {
     if (id < 0)
     {
         throw new ArgumentOutOfRangeException();
     }
     callbacks[id] = callback;
 }
示例#14
0
        private void sendtoken(NetworkIOArgs args)
        {
            NetworkCallback temp = this.requestServerCompleted;

            if (temp != null)
            {
                temp(null);
            }
        }
示例#15
0
        private void Recv(byte[] buf, int offset, int size, NetworkCallback callback)
        {
            if (this.status != NetworkState.Connected)
            {
                throw new NetworkException("NetworkClient:client did not connect server yet");
            }
            NetworkStream sockstream = sock.GetStream();

            sockstream.BeginRead(buf, offset, size, recvCallback, new recvObject(buf, offset, size, sockstream, callback));
        }
示例#16
0
        public virtual bool AddCallback(int id, NetworkCallback networkCallback)
        {
            if (networkCallbacks.ContainsKey(id))
            {
                return(false);
            }

            networkCallbacks.Add(id, networkCallback);
            return(true);
        }
示例#17
0
 public void AddCallBack(int type, NetworkCallback callback)
 {
     if (!callbackDic.ContainsKey(type))
     {
         callbackDic.Add(type, callback);
     }
     else
     {
         callbackDic[type] += callback;
     }
 }
示例#18
0
        public LocalClient(Window window)
        {
            Window = window;
            ManagedMoonlightCore = new ManagedMoonlightCore();

            _recvCallback = OnPacketReceived;
            _sendCallback = OnPacketSend;

            ManagedMoonlightCore.SetRecvCallback(_recvCallback);
            ManagedMoonlightCore.SetSendCallback(_sendCallback);
        }
示例#19
0
 public NetworkState Init(Socket socket, NetworkCallback callback, object state)
 {
     Socket    = socket;
     State     = state;
     Offset    = 0;
     Remaining = 0;
     Count     = 0;
     Buffer    = null;
     Callback  = callback;
     return(this);
 }
示例#20
0
        public GameSession()
        {
            Id        = Guid.NewGuid();
            Character = new Character(this);

            sendCallback = OnPacketSend;
            recvCallback = OnPacketReceived;

            Bridge.AddSendCallback(sendCallback);
            Bridge.AddRecvCallback(recvCallback);
        }
示例#21
0
 public NetworkState Init(Socket socket, byte[] buffer, int offset, int count, NetworkCallback callback,
                          object state)
 {
     Socket    = socket;
     State     = state;
     Offset    = offset;
     Remaining = count;
     Count     = count;
     Buffer    = buffer;
     Callback  = callback;
     return(this);
 }
示例#22
0
        private void recvServers(NetworkIOArgs args)
        {
            client.RecvCompleted -= Client_RecvCompleted;
            client.SendCompleted -= Client_SendCompleted;
            this.token            = null;
            NetworkCallback temp = loginCompleted;

            if (temp != null)
            {
                temp(args);
            }
        }
示例#23
0
 public void SendPackage(/*int proto ,*/ byte[] buf, NetworkCallback callback)
 {
     if (buf.Length > 65535)
     {
         throw new NetworkException("NetworkClient:buf sended is too big");
     }
     byte[] pack = new byte[buf.Length + TCPPACKBYTES];
     pack[0] = (byte)((buf.Length >> 8) & 0xff);
     pack[1] = (byte)(buf.Length & 0xff);
     Buffer.BlockCopy(buf, 0, pack, TCPPACKBYTES, buf.Length);
     this.Send(pack, 0, pack.Length, callback);
 }
示例#24
0
        public bool Initialize(string moduleName, NetworkCallback callback)
        {
            if (MEngine.Instance.CreateEngine(false) == false)
            {
                Debug.ErrorLog(MethodBase.GetCurrentMethod(), "Failed - MEngine.Instance.CreateEngine() Failed");
                return(false);
            }

            Callback = callback;

            return(true);
        }
    // Called on the frame this script is enabled, before Update().
    private void Start()
    {
        fireTimer       = fireRate;
        reloadTimer     = reloadSpeed;
        inicialPosition = transform.parent.localPosition;

        weaponIndex = GetWeaponIndex();

        playerAmmo = GameObject.Find("Ammo").GetComponent <Text>();

        animator        = localNetworkUser.GetComponent <Animator>();
        networkCallback = localNetworkUser.GetComponent <NetworkCallback>();
    }
示例#26
0
    public void Connect(NetworkCallback callback)
    {
        IPHostEntry ipHostInfo = Dns.Resolve(this.hostId);
        IPAddress   ipAddress  = ipHostInfo.AddressList[0];
        IPEndPoint  remoteEP   = new IPEndPoint(ipAddress, port);

        this.client = new Socket(ipAddress.AddressFamily,
                                 SocketType.Stream, ProtocolType.Tcp);
        // Connect to the remote endpoint.
        // TODO : find a way to pass it directly into BeginConnect
        this.connectCallback = callback;
        this.client.BeginConnect(remoteEP,
                                 new AsyncCallback(ConnectCallback), this.client);
    }
示例#27
0
        public static void Connect(Socket socket, IPEndPoint endpoint, object state, NetworkCallback callback)
        {
            NetworkState data = Cache.Get().Init(socket, callback, state);

            try
            {
                socket.BeginConnect(endpoint, EndConnectCallback, data);
            }
            catch
            {
                callback(false, 0, state);
                Cache.Put(data);
            }
        }
示例#28
0
    public static void AddListener(MessageID id, NetworkCallback handle, object target)
    {
        MessageCallbackData d = null;

        m_MessageDispatchs.TryGetValue(id, out d);
        if (d == null)
        {
            d = new MessageCallbackData();
            m_MessageDispatchs[id] = d;
        }
        d.Handler = handle;
        d.Target  = target;
        d.ID      = id;
    }
示例#29
0
        public void RecvPackage()
        {
            if (!this.recvIdle)
            {
                return;
            }
            this.recvIdle = false;

            Array.Clear(this.buffer, 0, BUFFERSIZE);
            NetworkStream stream = this.sock.GetStream();

            stream.BeginRead(this.buffer, 0, TCPPACKBYTES, (ar) => {
                try
                {
                    int n = stream.EndRead(ar);
                    int count;
                    if (n == 0)
                    {
                        this.Close();
                        NetworkCallback temp = RecvCompleted;
                        if (temp != null)
                        {
                            temp(new NetworkIOArgs(NetworkState.Closed, null, 0));
                        }
                    }
                    else if (n == TCPPACKBYTES)
                    {
                        count = buffer[0] << 8 | buffer[1];
                        Array.Clear(buffer, 0, TCPPACKBYTES);
                        if (count <= BUFFERSIZE)
                        {
                            this.Recv(this.buffer, 0, count);
                        }
                        else
                        {
                        }
                    }
                    else
                    {
                        throw new NetworkException("NetworkClient:wrong packet size");
                    }
                }
                catch
                {
                    this.Close();
                }
            }, null);
        }
    // Update is called once per frame
    void Update()
    {       /*
             * Debug.LogError(TutorialPlayerObjectRegistry.players[0].character.GetComponent<NetworkPlayer>().isReady) ;
             * if (TutorialPlayerObjectRegistry.players.Count == 2) {
             * Debug.LogError(TutorialPlayerObjectRegistry.players[1].character.GetComponent<NetworkPlayer>().isReady);
             * }
             * if (TutorialPlayerObjectRegistry.players[0].character);
             */
        if (PlayerInstance.instance.isFinished == true)
        {
            PlayerInstance.instance.trophies = timer;
            if (NetworkCallback.GetPlayers()[0].GetComponent <NetworkPlayer>().isReady)
            {
                if (NetworkCallback.GetBool().TrueForAll(x => x) == true)
                {
                    //PlayerInstance.instance.isReady = false;
                    List <int> scoreList = NetworkCallback.GetScore().OrderBy(l => l).ToList <int>();

                    if (scoreList[0] != 0)
                    {
                        if (PlayerInstance.instance.trophies == scoreList[0])
                        {
                            RoundSystem.Instance.MoveForward(2);
                            PlayerInstance.instance.isReady = false;
                            SceneManager.UnloadSceneAsync(2);
                        }
                        else if (PlayerInstance.instance.trophies == scoreList[1])
                        {
                            RoundSystem.Instance.MoveForward(1);
                            PlayerInstance.instance.isReady = false;
                            SceneManager.UnloadSceneAsync(2);
                        }
                        else
                        {
                            PlayerInstance.instance.isReady = false;
                            SceneManager.UnloadSceneAsync(2);
                        }
                    }
                }
            }
        }
        else
        {
            timer++;
        }
        distance.text = timer.ToString();
    }
示例#31
0
 internal void RegisterListeningSocket(Socket listeningSocket, NetworkCallback callback)
 {
     con.RegisterListeningSocket(listeningSocket, callback);
 }