📄 operationcenter.cs
字号:
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 + -