using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; using System.Net; using System.Text; using System.Threading.Tasks; namespace XCLPTInternalTesting { public class Sockets { public delegate void PushSockets(Sockets sockets); /// /// /// public Sockets() { } /// /// 创建Sockets对象 /// /// Ip地址 /// TcpClient /// 承载客户端Socket的网络流 public Sockets(IPEndPoint ip, TcpClient client, NetworkStream ns) { Ip = ip; Client = client; nStream = ns; } /// /// 创建Sockets对象 /// /// 用户名 /// 密码 /// Ip地址 /// TcpClient /// 承载客户端Socket的网络流 public Sockets(string name, string pass, IPEndPoint ip, TcpClient client, NetworkStream ns) { UserName = name; Password = pass; Ip = ip; Client = client; nStream = ns; } /// /// 接收缓冲区 /// public byte[] RecBuffer = new byte[8 * 1024]; /// /// 发送缓冲区 /// public byte[] SendBuffer = new byte[8 * 1024]; /// /// 异步接收后包的大小 /// public int Offset { get; set; } /// /// 用户名 /// public string UserName { get; set; } /// /// 密码 /// public string Password { get; set; } /// /// 当前IP地址,端口号 /// public IPEndPoint Ip { get; set; } /// /// 客户端主通信程序 /// public TcpClient Client { get; set; } /// /// 承载客户端Socket的网络流 /// public NetworkStream nStream { get; set; } /// /// 发生异常时不为null /// public Exception ex { get; set; } /// /// 新客户端标识.如果推送器发现此标识为true,那么认为是客户端上线 仅服务端有效 /// public bool NewClientFlag { get; set; } /// /// 客户端退出标识.如果服务端发现此标识为true,那么认为客户端下线 /// 客户端接收此标识时,认为客户端异常. /// public bool ClientDispose { get; set; } } /// /// Socket基类(抽象类) /// 抽象3个方法,初始化Socket(含一个构造),停止,启动方法. /// 此抽象类为TcpServer与TcpClient的基类,前者实现后者抽象方法 /// public abstract class SocketObject { public abstract void InitSocket(IPAddress ipaddress, int port); public abstract void InitSocket(string ipaddress, int port); public abstract void Start(); public abstract void Stop(); } }