Exemplo n.º 1
0
        private void ClientStart()//내가 클라이언트일 경우
        {
            byte[]    getByte = new byte[1024];
            byte[]    setByte = new byte[1024];
            const int sPort   = 23456;

            string sendstring = null;
            string getstring  = null;

            IPAddress  serverIP       = IPAddress.Parse("25.53.5.184");
            IPEndPoint serverEndPoint = new IPEndPoint(serverIP, sPort);

            Console.WriteLine("asdfsad");
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


            socket.Connect(serverEndPoint);
            if (socket.Connected)
            {
                Console.WriteLine("Connected");
                labelClient.Invoke((MethodInvoker) delegate()
                {
                    labelClient.Visible = false;
                });
            }

            while (true)
            {
                sendstring = RightCharacter.Location.X + "$" + RightCharacter.Location.Y + "$" + leftHPBar.Value + "$" + rightHPBar.Value + "$" +
                             "4" + "$" + "5" + "$" + "6" + "$" + "7" + "$" + "8" + "$" + "9" + "$" + "10" + "$" + "11" + "$" + Q_A_Image.Location.X
                             + "$" + Q_A_Image.Location.Y + "$" + Q_A_Image.Visible + "$" + "15" + "$" + "16" + "$" + "17" + "$" + "18" + "$" + "19" + "$"
                             + "$" + "20" + "$" + "21" + "$" + "22" + "$" + "23" + "$" + "24" + "$" + "25" + "$" + "26" + "$" + leftHPBar.Maximum + "$" +
                             rightHPBar.Maximum;
                if (sendstring != String.Empty)
                {
                    int getValueLength = 0;
                    setByte = Encoding.UTF7.GetBytes(sendstring);
                    socket.Send(setByte, 0, setByte.Length, SocketFlags.None);
                    socket.Receive(getByte, 0, getByte.Length, SocketFlags.None);
                    getValueLength = byteArrayDefrag(getByte);
                    getstring      = Encoding.UTF7.GetString(getByte, 0, getValueLength + 1);
                    string[] result = getstring.Split(new char[] { '$' });

                    #region Receive Result

                    /*
                     * Thread 에서 Form 접근할 시
                     * .Invoke((MethodInvoker)delegate ()
                     * {
                     *  //할거
                     * });
                     */


                    //상대 위치 이동하여 이동
                    Point lc = new Point();
                    lc.X = Convert.ToInt32(result[0]);
                    lc.Y = Convert.ToInt32(result[1]);
                    LeftCharacter.Invoke((MethodInvoker) delegate()
                    {
                        LeftCharacter.Location = lc;
                    });

                    //상대 Q스킬 이미지 위치 및 Visible
                    bool v = Convert.ToBoolean(result[14]);
                    Enemy_Q_A_Image.Invoke((MethodInvoker) delegate()
                    {
                        //할거
                        Enemy_Q_A_Image.Visible = v;
                    });
                    Point eqai = new Point();
                    eqai.X = Convert.ToInt32(result[12]);
                    eqai.Y = Convert.ToInt32(result[13]);
                    Enemy_Q_A_Image.Invoke((MethodInvoker) delegate()
                    {
                        //할거
                        Enemy_Q_A_Image.Location = eqai;
                    });

                    //상대 체력 동기화
                    leftHPBar.Invoke((MethodInvoker) delegate()
                    {
                        //할거
                        rightHPBar.Maximum = Convert.ToInt32(result[27]);
                        leftHPBar.Value    = Convert.ToInt32(result[3]);
                    });

                    #endregion
                }
                getByte = new byte[1024];

                Thread.Sleep(10);
            }
        }
Exemplo n.º 2
0
        private void ServerStart() //내가 서버일경우
        {
            byte[]    getByte = new byte[1024];
            byte[]    setByte = new byte[1024];
            const int sPort   = 23456;

            string    stringbyte = null;
            IPAddress serverIP   = IPAddress.Parse("25.53.5.184");

            Console.WriteLine("asdfasdf");
            IPEndPoint serverEndPoint = new IPEndPoint(serverIP, sPort);

            try
            {
                Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                Server.Bind(serverEndPoint);
                Server.Listen(10);
                Client = Server.Accept();

                if (Client.Connected)
                {
                    labelClient.Invoke((MethodInvoker) delegate()
                    {
                        labelClient.Visible = false;
                    });


                    while (true)
                    {
                        Client.Receive(getByte, 0, getByte.Length, SocketFlags.None);
                        stringbyte = Encoding.UTF7.GetString(getByte);
                        if (stringbyte != String.Empty)
                        {
                            int getValueLength = 0;
                            getValueLength = byteArrayDefrag(getByte);
                            stringbyte     = Encoding.UTF7.GetString(getByte, 0, getValueLength + 1);
                            string[] result = stringbyte.Split(new char[] { '$' });
                            #region Receive Result

                            /*
                             * Thread 에서 Form 접근할 시
                             * .Invoke((MethodInvoker)delegate ()
                             * {
                             *  //할거
                             * });
                             */


                            //상대 위치 이동하여 이동
                            Point lc = new Point();
                            lc.X = Convert.ToInt32(result[0]);
                            lc.Y = Convert.ToInt32(result[1]);
                            RightCharacter.Invoke((MethodInvoker) delegate()
                            {
                                RightCharacter.Location = lc;
                            });

                            //상대 Q스킬 이미지 위치 및 Visible
                            bool v = Convert.ToBoolean(result[14]);
                            Enemy_Q_A_Image.Invoke((MethodInvoker) delegate()
                            {
                                //할거
                                Enemy_Q_A_Image.Visible = v;
                            });
                            Point eqai = new Point();
                            eqai.X = Convert.ToInt32(result[12]);
                            eqai.Y = Convert.ToInt32(result[13]);
                            Enemy_Q_A_Image.Invoke((MethodInvoker) delegate()
                            {
                                //할거
                                Enemy_Q_A_Image.Location = eqai;
                            });

                            //상대 체력 동기화
                            rightHPBar.Invoke((MethodInvoker) delegate()
                            {
                                //할거
                                rightHPBar.Maximum = Convert.ToInt32(result[28]);
                                rightHPBar.Value   = Convert.ToInt32(result[4]);
                            });


                            #endregion

                            string sendData = LeftCharacter.Location.X + "$" + LeftCharacter.Location.Y + "$" + leftHPBar.Value + "$" + rightHPBar.Value + "$" +
                                              "4" + "$" + "5" + "$" + "6" + "$" + "7" + "$" + "8" + "$" + "9" + "$" + "10" + "$" + "11" + "$" + Q_A_Image.Location.X
                                              + "$" + Q_A_Image.Location.Y + "$" + Q_A_Image.Visible + "$" + "15" + "$" + "16" + "$" + "17" + "$" + "18" + "$" + "19" + "$"
                                              + "$" + "20" + "$" + "21" + "$" + "22" + "$" + "23" + "$" + "24" + "$" + "25" + "$" + "26" + "$" + leftHPBar.Maximum + "$" +
                                              rightHPBar.Maximum;;
                            byte[] setsendData = Encoding.UTF7.GetBytes(sendData);
                            Client.Send(setsendData, 0, setsendData.Length, SocketFlags.None);
                        }
                        getByte = new byte[1024];
                        setByte = new byte[1024];
                    }
                }
            }
            catch (System.Net.Sockets.SocketException socketEx)
            {
                Console.WriteLine("[Error]:{0}", socketEx.Message);
            }
            catch (System.Exception commonEx)
            {
                Console.WriteLine("[Error]:{0}", commonEx.Message);
            }
            finally
            {
            }
        }