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

📄 operationcenter.cs

📁 .Net实现的局域网完整IM,含完整的设计远隔
💻 CS
📖 第 1 页 / 共 5 页
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Collections;
using System.Data.SqlClient;

namespace JPMLab_LanTalker_Server
{
    public class LTS_Message
    {
        public char Type;
        public int UID;
        public byte[] Data;
    }

    public class icUser
    {
        public int _uID;
        public string _account;
        public string _password;
        public string _nickName;
        public int _headPic;
        public int _myShow;
        public int _sex;
        public string _birthDay;
        public string _bewrite;
        public string _openTime;
        public string _lastTime;
        public string _lastIP;
        public int _lastPort;
    }


    public class icSession
    {
        public int _index;
        public int _uID;
        public string _uNName;
        public Thread _thread;
        public string _startTime;
        public string _clientEndPoint;

        public ThreadState State
        {
            get
            {
                if (_thread != null)
                {
                    return _thread.ThreadState;
                }
                return ThreadState.Unstarted;
            }
        }
    }

    public static class OperationCenter
    {
        /// <summary>
        /// Public consts
        /// </summary>

        const int LOCATION_MESSAGEPORT = 2424;


        const char MESSAGE_TYPE_COMMAND = 'a';
        const char MESSAGE_TYPE_REGISTER = 'b';
        const char MESSAGE_TYPE_LOGIN = 'c';
        const char MESSAGE_TYPE_SEARCHUSERS = 'd';
        const char MESSAGE_TYPE_REQUESTFRIEND = 'e';
        const char MESSAGE_TYPE_AGEEBEFRIEND = 'f';
        const char MESSAGE_TYPE_DELETEFRIEND = 'g';
        const char MESSAGE_TYPE_NEWUSERINFO = 'h';
        const char MESSAGE_TYPE_MESSAGE = 'i';
        const char MESSAGE_TYPE_FILE = 'j';
        const char MESSAGE_TYPE_EXIT = 'k';

        const char MSGCMD_TYPE_MESSAGE = 'm';

        const int MESSAGE_UID_SERVER = -1;

        const char USER_STATE_NORMAL = 'n';
        const char USER_STATE_HOT = 'h';
        const char USER_STATE_STOP = 's';

        const char LOGIN_RESULT_COMLETE = 'l';
        const char LOGIN_RESULT_EACCOUNT = 'a';
        const char LOGIN_RESULT_EPASSWORD = 'p';
        const char LOGIN_RESULT_STOP = 's';
        const char LOGIN_RESULT_HOT = 'h';

        const char SEARCHUSERS_TYPE_ALL = 'a';
        const char SEARCHUSERS_TYPE_UID = 'i';
        const char SEARCHUSERS_TYPE_NICKNAME = 'n';

        /// <summary>
        /// Private consts
        /// </summary>
        const string DATASET_TABLE_TEMP = "Temp";
        const string DATASET_TABLE_USERS = "Users";
        const string DATASET_TABLE_FRIENDS = "Friends";

        const int SERVER_UID = 0;

        /// <summary>
        /// Fields
        /// </summary>

        public static System.Windows.Forms.ImageList _HeadImagesList;
        public static System.Windows.Forms.ImageList _ShowImagesList;
        public static NewControl.JPM_List _MessageList;
        public static NewControl.JPM_List _UserList;
        public static NewControl.JPM_List _SessionList;

        static System.Data.SqlClient.SqlConnection _dataConnection;
        static System.Data.SqlClient.SqlDataAdapter _dataAdpter;
        /// <summary> 
        ///FLD_UID,FLD_ACCOUNT,FLD_PASSWORD
        ///FLD_NICKNAME,FLD_HEADPIC,FLD_MYSHOW
        ///FLD_SEX,FLD_BIRTHDAY,FLD_BEWRITE
        ///FLD_OPENTIME,FLD_LASTTIME
        ///FLD_LASTIP,FLD_LASTPORT,FLD_STATE
        /// </summary>
        static System.Data.DataSet _dsetUsers = new System.Data.DataSet();

        static int _serverPort = LOCATION_MESSAGEPORT;
        static Thread _thdMsgListener;
        static bool _keepListen = false;
        static bool _keepSession = true;
        static System.Net.Sockets.TcpListener _socMsgListener;
        static System.Collections.ArrayList _icSessionList = new ArrayList();
        /// <summary>
        /// Attributes
        /// </summary>

        public static bool ServerInRun
        {
            get
            {
                if (_thdMsgListener == null)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }

        public static bool ServerInPause
        {
            get
            {
                if (_thdMsgListener != null)
                {
                    if (_thdMsgListener.ThreadState == ThreadState.Suspended)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                return false;
            }
        }

        public static bool DataLoaded
        {
            get
            {
                if (_dataConnection == null)
                {
                    return false;
                }
                return true;
            }
        }

        public static int ServerPort
        {
            set
            {
                _serverPort = value;
            }
            get
            {
                return _serverPort;
            }
        }
        ///<summary>
        /// Thread functions
        ///</summary>

        static void thdfunSession()
        {
            int t_UID = 0;
            string t_Acc = "";
            string t_Pwd = "";
            NewControl.JPM_List_Entity t_JE;
            NewControl.JPM_List_Entity t_SJE = new NewControl.JPM_List_Entity();
            icSession t_Session = new icSession();

            try
            {
                System.Net.Sockets.Socket t_NowSocket = _socMsgListener.AcceptSocket();
                System.Net.Sockets.NetworkStream t_NStream = new NetworkStream(t_NowSocket);
                System.IO.BinaryReader t_bReader = new BinaryReader(t_NStream);
                System.IO.BinaryWriter t_bWriter = new BinaryWriter(t_NStream);
                char t_MType;


                t_Session._thread = Thread.CurrentThread;
                t_Session._startTime = System.DateTime.Now.ToString();
                t_Session._clientEndPoint = t_NowSocket.RemoteEndPoint.ToString();
                t_Session._index = _icSessionList.Count;
                _icSessionList.Add(t_Session);

                t_SJE.Add(Convert.ToString(t_Session._index));
                t_SJE.Add(t_Session.State.ToString());
                t_SJE.Add(t_Session._startTime);
                t_SJE.Add(t_Session._clientEndPoint);
                _SessionList.AddAnEntity(t_SJE);

                while (_keepSession)// the message type chara
                {
                    if (_thdMsgListener == null)
                    {
                        break;
                    }

                    t_MType = t_bReader.ReadChar();
                    if (t_MType == MESSAGE_TYPE_LOGIN)
                    {
                        char t_R;
                        string t_IP;
                        int t_Port;
                        icUser t_User = new icUser();

                        t_JE = new NewControl.JPM_List_Entity();

                        t_Acc = t_bReader.ReadString();
                        t_Pwd = t_bReader.ReadString();
                        t_IP = t_bReader.ReadString();
                        t_Port = t_bReader.ReadInt32();

                        t_R = UserLogin(t_Acc, t_Pwd, t_IP, t_Port, ref t_User);
                        t_UID = t_User._uID;

                        t_bWriter.Write(t_R);
                        t_bWriter.Flush();

                        if (t_R == LOGIN_RESULT_COMLETE)
                        {
                            System.Data.DataSet t_FDSet = new System.Data.DataSet();

                            t_Session._uID = t_User._uID;
                            t_Session._uNName = t_User._nickName;

                            //FLD_UID,FLD_ACCOUNT,FLD_PASSWORD
                            //FLD_NICKNAME,FLD_HEADPIC,FLD_MYSHOW
                            //FLD_SEX,FLD_BIRTHDAY,FLD_BEWRITE
                            //FLD_OPENTIME,FLD_LASTTIME,FLD_LASTIP
                            //FLD_LASTPORT
                            t_bWriter.Write(t_User._uID);
                            t_bWriter.Write(t_User._account);
                            t_bWriter.Write(t_User._password);
                            t_bWriter.Write(t_User._nickName);
                            t_bWriter.Write(t_User._headPic);
                            t_bWriter.Write(t_User._myShow);
                            t_bWriter.Write(t_User._sex);
                            t_bWriter.Write(t_User._birthDay);
                            t_bWriter.Write(t_User._bewrite);
                            t_bWriter.Write(t_User._openTime);
                            t_bWriter.Write(t_User._lastTime);
                            t_bWriter.Write(t_User._lastIP);
                            t_bWriter.Write(t_User._lastPort);
                            t_bWriter.Flush();

                            if (GetHisFriends(t_UID, ref t_FDSet) == true)
                            {
                                int t_n, t_c;
                                System.Data.DataRowCollection t_Rows;
                                System.Data.DataRow t_CRow;
                                System.DBNull t_DBNULL = System.DBNull.Value;

                                t_Rows = t_FDSet.Tables[0].Rows;
                                t_c = t_Rows.Count;

                                t_bWriter.Write(t_c);

                                for (t_n = 0; t_n < t_c; t_n++)

⌨️ 快捷键说明

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