• 套接字的初始化和发送、收取数据


    class ModBusTcp : IDisposable
    {
    /// <summary>
    /// 服务端IP地址 例:192.168.1.1
    /// </summary>
    public string IP = "192.168.1.1";
    /// <summary>
    /// 服务端端口号 例:ModBus默认502
    /// </summary>
    public int Port = 502;
    /// <summary>
    /// 超时时间
    /// </summary>
    public int TimeOut = 3;
    //定义TCP套接字实例
    private Socket socket = null;
    //建立套接字连接
    public void Connect()
    {
    //定义套接字类型和和协议
    this.socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    //套接字超时设置
    this.socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout,TimeOut);
    //实例化网络端点
    IPEndPoint ip = new IPEndPoint(IPAddress.Parse(IP), Port);
    //建立连接
    this.socket.Connect(ip);
    }
    //套接字以字节数组形式发送数据
    public void Send(byte[] values)
    {
    this.socket.Send(values);
    }
    //套接字以字节数组形式接收数据
    public byte[] Receive()
    {
    //实例化接收数组
    byte[] receiveData = new byte[255];
    //接收数据,并返回接收字节数
    int length = this.socket.Receive(receiveData);
    byte[] result = new byte[length];//定义接收数据长度的数组
    //复制,并返回接收数据
    Array.Copy(receiveData, 0, result, 0, length);
    // Dispose();
    return result;
    }
    //是否已经建立连接
    public bool isConn()
    {
    bool boolflage = false;
    if (socket.Connected) boolflage = true;
    return boolflage;
    }

    //销毁套接字,释放资源
    public void Dispose()
    {
    //如果套接字连接连通,先禁止其收发,然后关闭
    if (socket.Connected)
    {
    socket.Shutdown(SocketShutdown.Both);
    socket.Close();
    }
    //回收套接字
    if (socket != null)
    {
    socket = null;
    }
    }
    }

  • 相关阅读:
    use imagination
    tar
    简单抓取安居客房产数据,并保存到Oracle数据库
    svn的安装(整合apache、ldap)包括错误解决post commit FS processing had error
    SVN安装中遇到的问题
    Linux环境源码编译安装SVN
    [转]SVN安装问题The Apache Portable Runtime (APR) library cannot be found
    深入浅出数据分析-脑图
    Python3.5在Windows 7下连接ORACLE数据库
    Python3.5之TuShare
  • 原文地址:https://www.cnblogs.com/qiulang/p/3325869.html
Copyright © 2020-2023  润新知