private void Data_Command(object sender, cMsg Args)
        {
            iMsg             sReturn    = null;
            WebsocketHandler Connection = (WebsocketHandler)sender;

            if (Command == null)
            {
                return;
            }
            if (Connection == null)
            {
                return;
            }

            try
            {
                sReturn = Command(Connection, Args);
            }
            catch (Exception ex)
            {
                sReturn = new sMsg("error", ex.Message);
            }

            if (Connection != null)
            {
                Connection.Send(sReturn);
            }
        }
        iMsg Data_Command(object sender, cMsg Args)
        {
            iMsg             sReturn    = null;
            WebsocketHandler Connection = (WebsocketHandler)sender;

            if (Received == null)
            {
                return(null);
            }
            if (Connection == null)
            {
                return(null);
            }

            try
            {
                sReturn = Received(Connection, Connection.Peer, Args);
            }
            catch (Exception ex)
            {
                string sLine = "Server.Err: " + ex.Message;

                Write(sLine);

                sReturn = new sMsg("error", sLine);
            }

            return(sReturn);
        }
Beispiel #3
0
    public void connectionServerAndStartGame()
    {
        msgServer.text    = "Conectando...";
        msgServer.enabled = true;
        pmsg.SetActive(true);

        try
        {
            cliente = new TcpClient();
            cliente.Connect("localhost", 8281);

            sockStream = cliente.GetStream();

            sLogin p;
            p.header.clientid = 0;
            p.header.packetID = 0x01;
            unsafe
            {
                for (byte i = 0; i < nickName.text.Length; i++)
                {
                    p.name[i] = nickName.text.ToCharArray()[i];
                }
            }

            p.header.size = Marshal.SizeOf(typeof(sLogin));

            byte[] pacote = new byte[p.header.size];

            transcData td = new transcData();
            pacote = transcData.StructureToBuffer <sLogin>(p);

            sockStream.Write(pacote, 0, pacote.Length);
            byte[] recv = new byte[constants.MAX_SIZE];

            sockStream.Read(recv, 0, constants.MAX_SIZE);
            Header header = transcData.BufferToStructure <Header>(recv, 0);
            switch (header.packetID)
            {
            case constants.SEND_MSG:         //caso chegue algum pacote de msg, exibe a msg e a conexão não sucedida
                sMsg r = transcData.BufferToStructure <sMsg>(recv, 0);
                unsafe {
                    msgServer.text = new string(r.msg);
                }
                Invoke("invMsg", 3);
                sockStream.Close();
                cliente.Close();
                break;

            case constants.ACCEPT_LOGIN:     //caso chegue o pacote de loguin, envia o player para a cena do game
                pAcceptLogin al = transcData.BufferToStructure <pAcceptLogin>(recv, 0);
                //seta dados do player na classe statica
                player.clientid = al.header.clientid;
                unsafe
                {
                    player.name = new string(al.name);
                }
                player.points = al.points;
                player.posX   = al.posX;
                player.posY   = al.posY;
                player.color  = al.color;
                SceneManager.LoadScene("Game");
                break;

            default:
                Debug.Log(header.packetID);
                msgServer.text = "Falha ao tentar se conectar!";
                Invoke("invMsg", 3);
                sockStream.Close();
                cliente.Close();
                break;
            }
        }
        catch (Exception error)
        {
            msgServer.text = error.Message;// "Falha ao tentar se conectar!";
            Invoke("invMsg", 3);
        }
    }