using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace YTDX202303TCP
{
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();
}
}