Пример #1
0
        // halutaan käynnistää alkuun tätä classia käynnistäessä
        public void Main(string nickName, string ip, string port, ClientForm form)
        {
            // merkkaa käyttöliittymän polun muuttujaan
            cForm = form;

            // socketin säädöt
            master = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(ip), Int32.Parse(port));

            name = nickName;

            // yritetään liittyä halutulle serverille
            try
            {
                master.Connect(ipe);
                cForm.WriteMessage("Connected to the server!");

                // käynnistetään uusi threadi ottamaan dataa vastaan
                Thread t = new Thread(() => { Data_IN(cForm); });
                t.Start();

                // lähetetään paketti serverille rekisteröimistä varten
                Packet p = new Packet(PacketType.Registeration, name);
                master.Send(p.ToBytes());
            }

            // tehdään, mikäli yhteys serveriin ei jostain syystä onnistunut
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                cForm.WriteMessage("Could not connect to host!");
            }
        }
Пример #2
0
        // ottaa dataa vastaan serveriltä
        static void Data_IN(ClientForm form)
        {
            ClientForm cForm = form;

            byte[] Buffer;
            int    readBytes;

            // threadi pitää looppia päällä kokoajan, jotta kaikki data saadaan vastaan.
            for (;;)
            {
                // yrittää ottaa dataa vastaa
                try
                {
                    Buffer    = new byte[master.SendBufferSize];
                    readBytes = master.Receive(Buffer);

                    // mikäli dataa on tullut, lähetetään se käsiteltäväksi
                    if (readBytes > 0)
                    {
                        DataManager(new Packet(Buffer), cForm);
                    }
                }

                // mikäli mitään dataa ei tule, serveri on todennäköisesti kaatunut, joten ohjelma suljetaan
                catch (SocketException ex)
                {
                    Console.WriteLine(ex.Message);
                    cForm.WriteMessage("The server had disconnected!");


                    Environment.Exit(0);
                }
            }
        }
Пример #3
0
        // käsittelee datan
        static void DataManager(Packet p, ClientForm form)
        {
            ClientForm cForm = form;

            ClientNetworking cNetworking = new ClientNetworking();

            // katsoo millaista dataa käsitellään
            switch (p.packetType)
            {
            case PacketType.Registeration:

                // tarkista onko kyseessä ensimmäinen käyttäjän
                // (vaikutta lähinnä itse pelin ajastimen hoitamiseen)
                id = p.Gdata[0];
                if (p.Gdata[1] == "yes")
                {
                    isFirst = true;
                    cForm.IsFirstCheck();
                }
                else
                {
                    isFirst = false;
                }
                break;

            case PacketType.Chat:

                string input = p.Gdata[0] + ": " + p.Gdata[1];
                cForm.WriteMessage(input);
                break;

            case PacketType.Movement:
                break;

            case PacketType.Timer:
                cForm.TimerTick(cForm);
                break;

            default:
                break;
            }
        }