Beispiel #1
0
        private static void Thread_Responser_()
        {
            command_data_server CMD;


            while (Connected)
            {
                while (Responser_Q.Count > 0)
                {
                    lock (Responser_Q)
                    {
                        CMD = (command_data_server)Responser_Q.Dequeue();
                    }
                    try
                    {
                        AsyncObject ao = new AsyncObject(1);
                        // 문자열을 바이트 배열으로 변환
                        //ao.Buffer = GZipCompress.Compress(Encoding.Unicode.GetBytes(JsonConvert.SerializeObject(CMD)));
                        ao.Buffer        = Data_structure.Combine(Encoding.Unicode.GetBytes("^^^"), GZipCompress.Compress(Encoding.Unicode.GetBytes(JsonConvert.SerializeObject(CMD))));
                        ao.WorkingSocket = m_ClientSocket;

                        ao.WorkingSocket.BeginSend(ao.Buffer, 0, ao.Buffer.Length, SocketFlags.None, m_fnSendHandler, ao);
                    }
                    catch (Exception ex)
                    {
                        Console.Write("Error Send Message [ Command : {0}, data : {1},  receiver]", CMD.Command_code.ToString(), CMD.data != null ? CMD.data.ToString() : "", CMD.Sender.ToString());
                        Console.Write("Error String: {0}", ex);
                    }
                }
                Thread.Sleep(100);
            }
        }
Beispiel #2
0
        private void send_command(Command_Server command_code, object data)
        {
            if (Unit_No == -1)
            {
                return;
            }
            AsyncObject ao = new AsyncObject(1);

            command_data_server CD = new command_data_server(Unit_No, command_code, data);

            // 문자열을 바이트 배열으로 변환

            //ao.Buffer = GZipCompress.Compress(Encoding.Unicode.GetBytes(JsonConvert.SerializeObject(CD)));
            ao.Buffer = Data_structure.Combine(Encoding.Unicode.GetBytes("^^^"), GZipCompress.Compress(Encoding.Unicode.GetBytes(JsonConvert.SerializeObject(CD))));

            ao.WorkingSocket = m_ClientSocket;
            // 전송 시작!
            try
            {
                m_ClientSocket.BeginSend(ao.Buffer, 0, ao.Buffer.Length, SocketFlags.None, m_fnSendHandler, ao);
            }
            catch (Exception ex)
            {
                Console.WriteLine("SENDING ERROR: {0}", ex.Message);
                // 서버와 연결이 끊기면 여기서 문제가 생긴다.
                Make_Client_Event(Unit_Event_Type.Server_Connection_Broken, 0);
                Connected = false;
            }
        }
        private void send_command(Command_Server command_code, object data)
        {
            if (Unit_No == -1)
            {
                return;
            }
            AsyncObject ao = new AsyncObject(1);

            command_data_server CD = new command_data_server(Unit_No, command_code, data);

            try {
                // 문자열을 바이트 배열으로 변환
                //ao.Buffer = GZipCompress.Compress(Encoding.Unicode.GetBytes(JsonConvert.SerializeObject(CD)));
                ao.Buffer        = Data_structure.Combine(Encoding.Unicode.GetBytes("^^^"), GZipCompress.Compress(Encoding.Unicode.GetBytes(JsonConvert.SerializeObject(CD))));
                ao.WorkingSocket = m_ClientSocket;
            }
            catch (Exception ex)
            {
                Console.WriteLine("전송 준비중 오류!\n메세지: {0}", ex.Message);
                return;
            }

            try
            {
                // 전송 시작!
                m_ClientSocket.BeginSend(ao.Buffer, 0, ao.Buffer.Length, SocketFlags.None, m_fnSendHandler, ao);
            }
            catch (Exception ex)
            {
                Console.WriteLine("전송 중 오류 발생!\n메세지: {0}", ex.Message);
                Flag_Restart = true;
            }
        }