Go to my github

LCL Socket基类

SocketBase类库主要是方便创建Socket客户端和Socket服务端的基础实现。

抽象基类:主要实现创建Socket

    public abstract class NetworkBase{}

通用基类:指定了消息的解析规则,指定了数据转换的规则 的基本实现

    /// <summary>
    /// 支持长连接,短连接两个模式的通用客户端基类
    /// </summary>
    /// <typeparam name="TNetMessage">指定了消息的解析规则</typeparam>
    /// <typeparam name="TTransform">指定了数据转换的规则</typeparam>
    public class NetworkDoubleBase<TNetMessage, TTransform> : NetworkBase
        where TNetMessage : INetMessage, new()
        where TTransform : IByteTransform, new()
    {}

设备读写基类:

    /// 设备类的基类,提供了基础的字节读写方法
    public class NetworkDeviceBase<TNetMessage, TTransform> : NetworkDoubleBase<TNetMessage, TTransform> , IReadWriteNet where TNetMessage : INetMessage, new() where TTransform : IByteTransform, new()
    {}

服务器程序的基础类:包含了主动异步接收的方法实现和文件类异步读写的实现基类:

    public class NetworkXBase : NetworkBase{}
    public class NetworkServerBase : NetworkXBase{}

常用Socket服务器基类:

    /// 文件服务器类的基类,为直接映射文件模式和间接映射文件模式提供基础的方法支持
    public class NetworkFileServerBase : NetworkServerBase{}
    /// 异形客户端的基类,提供了基础的异形操作
    public class NetworkAlienClient : NetworkServerBase{}
    /// 发布订阅服务器的类,支持按照关键字进行数据信息的订阅
    public class NetPushServer : NetworkServerBase{}
    /// 同步消息处理服务器
    public class NetSimplifyServer : NetworkServerBase{}
    /// 用于服务器支持软件全自动更新升级的类
    public sealed class NetSoftUpdateServer : NetworkServerBase{}
    // 终极文件管理服务器,实现所有的文件分类管理,读写分离,不支持直接访问文件名
    public class UltimateFileServer : NetworkFileServerBase{}

常用Socket客户端基类:

//与服务器文件引擎交互的客户端类,支持操作Advanced引擎和Ultimate引擎
public abstract class FileClientBase : NetworkXBase{}
public class IntegrationFileClient : FileClientBase{}
//发布订阅
public class NetPushClient : NetworkXBase{}
//异步访问数据的客户端类
public class NetSimplifyClient : NetworkDoubleBase<HslMessage, RegularByteTransform>{}
//西门子PLC
public class SiemensS7Net : NetworkDeviceBase<SiemensS7Message, ReverseBytesTransform>{}
public class SiemensPPI : SerialDeviceBase<ReverseBytesTransform>{}
public class SiemensFetchWriteNet : NetworkDeviceBase<SiemensFetchWriteMessage, ReverseBytesTransform>{}
//松下PLC
public class PanasonicMewtocol : SerialDeviceBase<RegularByteTransform>{}
//欧姆龙PLC
public class OmronFinsNet : NetworkDeviceBase<OmronFinsMessage,ReverseWordTransform>{}
//三菱PLC
public class MelsecMcNet : NetworkDeviceBase<MelsecQnA3EBinaryMessage, RegularByteTransform>{}
public class MelsecMcAsciiNet : NetworkDeviceBase<MelsecQnA3EAsciiMessage, RegularByteTransform>{}
public class MelsecFxSerial : SerialDeviceBase<RegularByteTransform>{}
public class MelsecFxLinks : SerialDeviceBase<RegularByteTransform>{}
public class MelsecA1ENet : NetworkDeviceBase<MelsecA1EBinaryMessage, RegularByteTransform>{}

开发注意:

客户端和服务器端必须使用相同的 消息解析规则和数据转换规则要不然解析不通过。

posted @ 2019-01-04 11:18  峡谷少爷  阅读(447)  评论(0编辑  收藏  举报