⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.cs

📁 txt file..........................
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WSISClasses;
using GsmComm.PduConverter;
using GsmComm.GsmCommunication;
using System.Threading;


namespace SMSServer
{
    public class Client
    {
        public enum STATE { ATTENDANCE, INTERNALS, ALERT, ATTENDANCE_ALERT, INTERNAL_ALERT, PLACEMENT_ALERT, SERVICE_ACTIVATION, SERVICE_DEACTIVATION, NULL};
        String ClientNo;
        String RequestMessage;
        String Result;
        Student m_Student;
        STATE m_RequestState = STATE.NULL;
        String[] userData = new String[10];
        Thread ClientThread;
        int i = 0;

        public Client() { }
        public Client(String clientno, String reqmessage)
        {
            ClientNo = clientno;
            RequestMessage = reqmessage + " ";
            
            ClientThread = new Thread(new ThreadStart(ParseClientMessage));
            ClientThread.Start();
        }

        private void ParseClientMessage()
        {
            int eolIndex=0;
            int si = 0;

            while (((eolIndex = RequestMessage.IndexOf(" ",eolIndex)) != -1))
            {
                userData[i++] = RequestMessage.Substring(si, eolIndex-si).Trim();

                if (userData[0] == "SND")
                {
                    ParseSNDMessage();
                    break;
                }
                else if (userData[0] == "PAL")
                {
                    ParsePALMessage();
                    break;
                }
                si = eolIndex + 1;
                eolIndex++;
                          
                if (eolIndex >= RequestMessage.Length - 1)
                    break;
                
            }
            ProcessClientMessage();
        }

        private void ParseSNDMessage()
        {
            int eolIndex = 0;
            int si = 0;
            i = 0;
            while (((eolIndex = RequestMessage.IndexOf(" ", eolIndex)) != -1))
            {
                userData[i++] = RequestMessage.Substring(si, eolIndex - si).Trim();

                si = eolIndex + 1;
                eolIndex++;

                if (i == 4)
                {
                    eolIndex = RequestMessage.IndexOf(" ", eolIndex);
                    userData[i] = RequestMessage.Substring(si, RequestMessage.Length-si).Trim();
                    break;
                }
                

                if (eolIndex >= RequestMessage.Length - 1)
                    break;

            }
        }

        private void ParsePALMessage()
        {
            int eolIndex = 0;
            int si = 0;
            i = 0;
            while (((eolIndex = RequestMessage.IndexOf(" ", eolIndex)) != -1))
            {
                userData[i++] = RequestMessage.Substring(si, eolIndex - si).Trim();

                si = eolIndex + 1;
                eolIndex++;

                if (i == 1)
                {
                    eolIndex = RequestMessage.IndexOf(" ", eolIndex);
                    userData[i] = RequestMessage.Substring(si, RequestMessage.Length - si).Trim();
                    break;
                }


                if (eolIndex >= RequestMessage.Length - 1)
                    break;

            }
        }

        private void ProcessClientMessage()
        {
            if (userData[0].ToUpper() == "ATT")
                m_RequestState = STATE.ATTENDANCE;
            else if (userData[0].ToUpper() == "INT")
                m_RequestState = STATE.INTERNALS;
            else if (userData[0].ToUpper() == "SND")
                m_RequestState = STATE.ALERT;
            else if (userData[0].ToUpper() == "ACT")
                m_RequestState = STATE.SERVICE_ACTIVATION;
            else if (userData[0].ToUpper() == "DAC")
                m_RequestState = STATE.SERVICE_DEACTIVATION;
            else if (userData[0].ToUpper() == "AAL")
                m_RequestState = STATE.ATTENDANCE_ALERT;
            else if (userData[0].ToUpper() == "IAL")
                m_RequestState = STATE.INTERNAL_ALERT;
            else if (userData[0].ToUpper() == "PAL")
                m_RequestState = STATE.PLACEMENT_ALERT;

            ReplayClientMessage();
            
        }

        private void ReplayClientMessage()
        {
            switch (m_RequestState)
            {
                case STATE.ATTENDANCE:
                    m_Student = new Student();
                    Result = m_Student.GetSMSAttendance(userData[1]);
                    SendMessage();
                    break;

                case STATE.INTERNALS:
                    m_Student = new Student();
                    if(userData[2] == "" || userData[2] == " " || userData[2] == null)
                        Result = m_Student.GetSMSInternals(userData[1].ToUpper(), 1);
                    else
                        Result = m_Student.GetSMSInternals(userData[1].ToUpper(), Convert.ToInt32(userData[2]));
                    SendMessage();
                    break;

                case STATE.ALERT:
                    m_Student = new Student();
                    String[] MobileNos = m_Student.GetMobileNo(userData[1].ToUpper(), Convert.ToInt32(userData[2]), userData[3].ToUpper());
                    Result = userData[4];
                    foreach (String mob in MobileNos)
                    {
                        ClientNo = mob;
                        if (ClientNo == null)
                            break;
                        SendMessage();
                    }
                    break;

                case STATE.SERVICE_ACTIVATION:
                    m_Student = new Student();
                    if (m_Student.RegAlerts(userData[1].ToUpper(), ClientNo))
                        Result = "You have sucessfully register for alerts.";
                    else
                        Result = "Alert registration failed. Please try again after sometime. if you still face a problem contact System Administrator.";

                    SendMessage();
                    break;

                case STATE.SERVICE_DEACTIVATION:
                    m_Student = new Student();
                    if (m_Student.UnRegAlerts(userData[1].ToUpper()))
                        Result = "You have sucessfully unregister for alerts.";
                    else
                        Result = "Alert De-registration failed. Please try again after sometime. if you still face a problem contact System Administrator.";

                    SendMessage();    
                    break;

                case STATE.ATTENDANCE_ALERT:
                    m_Student = new Student();
                    String[,] AlertList = m_Student.GetAlertList(userData[1].ToUpper(), Convert.ToInt32(userData[2]), userData[3].ToUpper());
                    String usn;
                    for (int x = 0; x < AlertList.Length; x++)
                    {
                        usn = AlertList[x, 0];
                        ClientNo = AlertList[x, 1];
                        if (usn == null || ClientNo == null)
                            break;

                        Result = m_Student.GetSMSAttendance(usn);
                        SendMessage();

                    }
                    break;

                case STATE.INTERNAL_ALERT:
                    m_Student = new Student();
                    String[,] AlertList1 = m_Student.GetAlertList(userData[1].ToUpper(), Convert.ToInt32(userData[2]), userData[3].ToUpper());
                    String usn1;
                    for (int x = 0; x < AlertList1.Length; x++)
                    {
                        usn1 = AlertList1[x, 0];
                        ClientNo = AlertList1[x, 1];
                        if (usn1 == null || ClientNo == null)
                            break;

                        Result = m_Student.GetSMSInternals(usn1,Convert.ToInt32(userData[4]));
                        SendMessage();

                    }
                    break;

                case STATE.PLACEMENT_ALERT:
                    m_Student = new Student();
                    String[] MobileNos1 = m_Student.GetAllNumbers();
                    Result = userData[1];
                    foreach (String mob in MobileNos1)
                    {
                        ClientNo = mob;
                        if (ClientNo == null)
                            break;
                        SendMessage();
                    }
                    break;

                default:
                    Result = "Invalid Request.\r\n";
                    Result += "ATT <USN>  :  For Attemdance\r\n";
                    Result += "INT <USN> <Internal No> :  For Internals\r\n";
                    Result += "e.g.  ATT 1MS03CS142\r\n";
                    Result += "INT 1MS03CS142 1\r\n";
                    SendMessage();
                    break;
            }

            ClientThread.Join(1000);
            if (ClientThread.IsAlive)
                ClientThread.Abort(); 
        }

        private void SendMessage()
        {
              // Send an SMS message
                SmsSubmitPdu pdu;
                               
                pdu = new SmsSubmitPdu(Result, ClientNo, "");  // "" indicate SMSC No

                // Send the message the specified number of times
              
                CommSetting.comm.SendMessage(pdu);
                   
        }

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -