using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using Team.Communicate.EventArg; using Team.Communicate.State; namespace Team.Communicate.Server { public interface ITeamTcpServer : IDisposable { /// <summary> /// 服务器是否正在运行 /// </summary> bool IsRunning { get; } /// <summary> /// 监听的IP地址 /// </summary> IPAddress Address { get; } /// <summary> /// 监听的端口 /// </summary> int Port { get; } /// <summary> /// 通信使用的编码 /// </summary> Encoding Encoding { get; set; } /// <summary> /// 启动服务器 /// </summary> void Start(); /// <summary> /// 启动服务器 /// </summary> /// <param name="backlog"> /// 服务器所允许的挂起连接序列的最大长度 /// </param> void Start(int backlog); /// <summary> /// 停止服务器 /// </summary> void Stop(); /// <summary> /// 发送数据 /// </summary> /// <param name="state">接收数据的客户端会话</param> /// <param name="data">数据报文</param> void Send(TcpClientState state, byte[] data); /// <summary> /// 发送数据 /// </summary> /// <param name="state">接收数据的客户端会话</param> /// <param name="data">数据报文</param> Task SendAsync(TcpClientState state, byte[] data); /// <summary> /// 指定IP地址发送数据 /// </summary> /// <param name="ip"></param> /// <param name="data"></param> void Send(string ip, byte[] data); /// <summary> /// 指定IP地址发送数据 /// </summary> /// <param name="ip"></param> /// <param name="data"></param> Task SendAsync(string ip, byte[] data); /// <summary> /// 异步发送数据至指定的客户端 /// </summary> /// <param name="client">客户端</param> /// <param name="data">报文</param> void Send(TcpClient client, byte[] data); /// <summary> /// 异步发送数据至指定的客户端 /// </summary> /// <param name="client">客户端</param> /// <param name="data">报文</param> Task SendAsync(TcpClient client, byte[] data); void BroadToClient(string msg); Task BroadToClientAsync(string msg); /// <summary> /// 与客户端的连接已建立事件 /// </summary> event EventHandler<ServerEventArgs> ClientConnected; /// <summary> /// 与客户端的连接已断开事件 /// </summary> event EventHandler<ServerEventArgs> ClientDisconnected; /// <summary> /// 接收到数据事件 /// </summary> event EventHandler<ServerEventArgs> DataReceived; /// <summary> /// 发送数据前的事件 /// </summary> event EventHandler<ServerEventArgs> PrepareSend; /// <summary> /// 数据发送完毕事件 /// </summary> event EventHandler<ServerEventArgs> CompletedSend; /// <summary> /// 网络错误事件 /// </summary> event EventHandler<ServerEventArgs> NetError; /// <summary> /// 异常事件 /// </summary> event EventHandler<ServerEventArgs> OtherException; /// <summary> /// 关闭一个与客户端之间的会话 /// </summary> /// <param name="state">需要关闭的客户端会话对象</param> void Close(TcpClientState state); /// <summary> /// 关闭所有的客户端会话,与所有的客户端连接会断开 /// </summary> void CloseAllClient(); /// <summary> /// Performs application-defined tasks associated with freeing, /// releasing, or resetting unmanaged resources. /// </summary> } }