📄 connectioneventargs.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace GRRSServer
{
/// <summary>
/// 当服务器端收到客户端消息时触发
/// </summary>
/// <param name="sender">Sender.</param>
/// <param name="e">The received command object.</param>
public delegate void ClientReceivedEventHandler(object sender, ClientEventArgs e);
/// <summary>
/// Occurs when a command had been sent to the remote client successfully.
/// </summary>
/// <param name="sender">Sender.</param>
/// <param name="e">EventArgs.</param>
public delegate void CommandSentEventHandler(object sender, EventArgs e);
/// <summary>
/// Occurs when a command sending action had been failed.This is because disconnection or sending exception.
/// </summary>
/// <param name="sender">Sender.</param>
/// <param name="e">EventArgs.</param>
public delegate void CommandSendingFailedEventHandler(object sender, EventArgs e);
/// <summary>
/// Occurs when a remote client had been disconnected from the server.
/// </summary>
/// <param name="sender">Sender.</param>
/// <param name="e">The client information.</param>
public delegate void DisconnectedEventHandler(object sender, ClientEventArgs e);
/// <summary>
/// The class that contains information about received command.
/// </summary>
public class CommandEventArgs : EventArgs
{
private Command command;
/// <summary>
/// The received command.
/// </summary>
public Command Command
{
get { return command; }
}
/// <summary>
/// Creates an instance of CommandEventArgs class.
/// </summary>
/// <param name="cmd">The received command.</param>
public CommandEventArgs(Command cmd)
{
this.command = cmd;
}
}
/// <summary>
/// Client event args.
/// </summary>
public class ClientEventArgs : EventArgs
{
private Socket socket;
/// <summary>
/// The ip address of remote client.
/// </summary>
public IPAddress IP
{
get { return ((IPEndPoint)this.socket.RemoteEndPoint).Address; }
}
/// <summary>
/// The port of remote client.
/// </summary>
public int Port
{
get { return ((IPEndPoint)this.socket.RemoteEndPoint).Port; }
}
private string strReceived = string.Empty;
/// <summary>
/// 客户端发送的信息
/// </summary>
public string ReceivedString
{
get
{
return strReceived;
}
}
/// <summary>
/// Creates an instance of ClientEventArgs class.
/// </summary>
/// <param name="clientManagerSocket">The socket of server side socket that comunicates with the remote client.</param>
public ClientEventArgs(Socket clientManagerSocket,string strRec)
{
this.strReceived = strRec;
this.socket = clientManagerSocket;
}
}
/// <summary>
/// The command class.主要由服务器向客户端发送调度指令
/// </summary>
public class Command
{
private CommandType cmdType;
/// <summary>
/// The type of command to send.If you wanna use the Message command type,create a Message class instead of command.
/// </summary>
public CommandType CommandType
{
get { return cmdType; }
set { cmdType = value; }
}
private IPAddress senderIP;
/// <summary>
/// [Gets/Sets] The IP address of command sender.
/// </summary>
public IPAddress SenderIP
{
get { return senderIP; }
set { senderIP = value; }
}
private string senderName;
/// <summary>
/// [Gets/Sets] The name of command sender.
/// </summary>
public string SenderName
{
get { return senderName; }
set { senderName = value; }
}
private IPAddress target;
/// <summary>
/// [Gets/Sets] The targer machine that will receive the command.Set this property to IPAddress.Broadcast if you want send the command to all connected clients.
/// </summary>
public IPAddress Target
{
get { return target; }
set { target = value; }
}
private string commandBody;
/// <summary>
/// The body of the command.This string is different in various commands.
/// <para>Message : The text of the message.</para>
/// <para>ClientLoginInform,SendClientList : "RemoteClientIP:RemoteClientName".</para>
/// <para>***WithTimer : The interval of timer in miliseconds..The default value is 60000 equal to 1 min.</para>
/// <para>IsNameExists : 'True' or 'False'</para>
/// <para>Otherwise pass the "" or null.</para>
/// </summary>
public string MetaData
{
get { return commandBody; }
set { commandBody = value; }
}
/// <summary>
/// Creates an instance of command object to send over the network.
/// </summary>
/// <param name="type">The type of command.If you wanna use the Message command type,create a Message class instead of command.</param>
/// <param name="targetMachine">The targer machine that will receive the command.Set this property to IPAddress.Broadcast if you want send the command to all connected clients.</param>
/// <param name="metaData">
/// The body of the command.This string is different in various commands.
/// <para>Message : The text of the message.</para>
/// <para>ClientLoginInform,SendClientList : "RemoteClientIP:RemoteClientName".</para>
/// <para>***WithTimer : The interval of timer in miliseconds..The default value is 60000 equal to 1 min.</para>
/// <para>IsNameExists : 'True' or 'False'</para>
/// <para>Otherwise pass the "" or null or use the next overriden constructor.</para>
/// </param>
public Command(CommandType type, IPAddress targetMachine, string metaData)
{
this.cmdType = type;
this.target = targetMachine;
this.commandBody = metaData;
}
/// <summary>
/// Creates an instance of command object to send over the network.
/// </summary>
/// <param name="type">The type of command.If you wanna use the Message command type,create a Message class instead of command.</param>
/// <param name="targetMachine">The targer machine that will receive the command.Set this property to IPAddress.Broadcast if you want send the command to all connected clients.</param>
public Command(CommandType type, IPAddress targetMachine)
{
this.cmdType = type;
this.target = targetMachine;
this.commandBody = "";
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -