123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 Jiang Yin. All rights reserved.
- // Homepage: https://gameframework.cn/
- // Feedback: mailto:ellan@gameframework.cn
- //------------------------------------------------------------
- using System;
- using System.Net;
- using System.Net.Sockets;
- namespace GameFramework.Network
- {
- /// <summary>
- /// 网络频道接口。
- /// </summary>
- public interface INetworkChannel
- {
- /// <summary>
- /// 获取网络频道名称。
- /// </summary>
- string Name
- {
- get;
- }
- /// <summary>
- /// 获取网络频道所使用的 Socket。
- /// </summary>
- Socket Socket
- {
- get;
- }
- /// <summary>
- /// 获取是否已连接。
- /// </summary>
- bool Connected
- {
- get;
- }
- /// <summary>
- /// 获取网络服务类型。
- /// </summary>
- ServiceType ServiceType
- {
- get;
- }
- /// <summary>
- /// 获取网络地址类型。
- /// </summary>
- AddressFamily AddressFamily
- {
- get;
- }
- /// <summary>
- /// 获取要发送的消息包数量。
- /// </summary>
- int SendPacketCount
- {
- get;
- }
- /// <summary>
- /// 获取累计发送的消息包数量。
- /// </summary>
- int SentPacketCount
- {
- get;
- }
- /// <summary>
- /// 获取已接收未处理的消息包数量。
- /// </summary>
- int ReceivePacketCount
- {
- get;
- }
- /// <summary>
- /// 获取累计已接收的消息包数量。
- /// </summary>
- int ReceivedPacketCount
- {
- get;
- }
- /// <summary>
- /// 获取或设置当收到消息包时是否重置心跳流逝时间。
- /// </summary>
- bool ResetHeartBeatElapseSecondsWhenReceivePacket
- {
- get;
- set;
- }
- /// <summary>
- /// 获取丢失心跳的次数。
- /// </summary>
- int MissHeartBeatCount
- {
- get;
- }
- /// <summary>
- /// 获取或设置心跳间隔时长,以秒为单位。
- /// </summary>
- float HeartBeatInterval
- {
- get;
- set;
- }
- /// <summary>
- /// 获取心跳等待时长,以秒为单位。
- /// </summary>
- float HeartBeatElapseSeconds
- {
- get;
- }
- /// <summary>
- /// 注册网络消息包处理函数。
- /// </summary>
- /// <param name="handler">要注册的网络消息包处理函数。</param>
- void RegisterHandler(IPacketHandler handler);
- /// <summary>
- /// 设置默认事件处理函数。
- /// </summary>
- /// <param name="handler">要设置的默认事件处理函数。</param>
- void SetDefaultHandler(EventHandler<Packet> handler);
- /// <summary>
- /// 连接到远程主机。
- /// </summary>
- /// <param name="ipAddress">远程主机的 IP 地址。</param>
- /// <param name="port">远程主机的端口号。</param>
- void Connect(IPAddress ipAddress, int port);
- /// <summary>
- /// 连接到远程主机。
- /// </summary>
- /// <param name="ipAddress">远程主机的 IP 地址。</param>
- /// <param name="port">远程主机的端口号。</param>
- /// <param name="userData">用户自定义数据。</param>
- void Connect(IPAddress ipAddress, int port, object userData);
- /// <summary>
- /// 关闭网络频道。
- /// </summary>
- void Close();
- /// <summary>
- /// 向远程主机发送消息包。
- /// </summary>
- /// <typeparam name="T">消息包类型。</typeparam>
- /// <param name="packet">要发送的消息包。</param>
- void Send<T>(T packet) where T : Packet;
- }
- }
|