コード例 #1
0
        protected void CheckConnections(DisconnectAction Action)
        {
            var activeConnections =
                IPGlobalProperties.
                GetIPGlobalProperties().
                GetActiveTcpConnections().
                Where(x => x.LocalEndPoint.Equals(localEndPoint));

            //CONTINUE:
            try
            {
                for (var index = 0; index < usersOnline.Count; index++)
                {
                    var user           = usersOnline[index];
                    var tcpConnections = (activeConnections as TcpConnectionInformation[]) ?? activeConnections.ToArray();
                    var item           = tcpConnections.SingleOrDefault(x =>
                                                                        x.LocalEndPoint.Equals(user.Client.Client.LocalEndPoint) &&
                                                                        x.RemoteEndPoint.Equals(user.Client.Client.RemoteEndPoint));
                    //Строго !(item.State == TcpState.Established), TcpState.Closed работает совершенно иначе (как???)
                    if (item == null || item.State != TcpState.Established)
                    {
                        Action(user);
                    }
                }
            }

            catch (Exception e)
            {
                if (e.Message == "Collection was modified; enumeration operation may not execute.")
                {
                    //goto CONTINUE;
                }
            }
        }
コード例 #2
0
        //--------------------------------------------------
        //UBA END
        //--------------------------------------------------

        public void Close()
        {
            // writer.Write("x");
            if (IsConnected == true)
            {
                DisconnectAction?.Invoke("Disconnect happened");

                Close_Self();
            }
        }
コード例 #3
0
        public void ExecuteDisconnectAction(DisconnectAction disconnectAction)
        {
            try {
                switch (disconnectAction)
                {
                case DisconnectAction.None:
                {
                    this.Peer = new PhotonPeer(listeners[GameState.Master], ConnectionProtocol.Udp);
#if LOCAL
                    this.Peer.Connect("192.168.1.28:5105", "Master");
#else
                    this.Peer.Connect("52.10.78.38:5105", "Master");
#endif
                    ClientApplication.SetGameState(GameState.Master);
                    break;
                }

                case DisconnectAction.ConnectToLoginServer:
                {
                    var server = ClientApplication.Servers.GetServer(ServerType.login);
                    this.Peer = new PhotonPeer(listeners[GameState.Login], ConnectionProtocol.Udp);
                    this.Peer.Connect(server.IpAddress + ":" + server.Port, "Login");
                    ClientApplication.SetGameState(GameState.Login);
                    break;
                }

                case DisconnectAction.ConnectToSelectCharacterServer:
                {
                    var server = ClientApplication.Servers.GetServer(ServerType.character);
                    this.Peer = new PhotonPeer(listeners[GameState.SelectCharacter], ConnectionProtocol.Udp);
                    this.Peer.Connect(server.IpAddress + ":" + server.Port, "SelectCharacter");
                    ClientApplication.SetGameState(GameState.SelectCharacter);
                    break;
                }
                }
            }catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: OlegGelezcov/neb
 public static void ResetDisconnectAction()
 {
     disconnectAction = DisconnectAction.None;
 }
コード例 #5
0
ファイル: Program.cs プロジェクト: OlegGelezcov/neb
 public static void SetDisconnectAction(DisconnectAction onDisconnect)
 {
     disconnectAction = onDisconnect;
 }