zoukankan      html  css  js  c++  java
  • 自定义强大的C#网络操作基础类(NetHelper)

    using System; using System.Text;
    using
    System.Net.Sockets;
    using
    System.Net.Mail;
    using
    System.Net;

    namespace
    DotNet.Utilities
    {
       
    /// <summary>
       
    /// 网络操作相关的类
       
    /// </summary>   
       
    publicclassNetHelper
       
    {
           
    #region 检查设置的IP地址是否正确,返回正确的IP地址
           
    /// <summary>
           
    /// 检查设置的IP地址是否正确,并返回正确的IP地址,无效IP地址返回"-1"。
           
    /// </summary>
           
    /// <param name="ip">设置的IP地址</param>
           
    //public static string GetValidIP(string ip)
           
    //{
           
    //    if (PageValidate.IsIP(ip))
           
    //    {
           
    //        return ip;
           
    //    }
           
    //    else
           
    //    {
           
    //        return "-1";
           
    //    }
           
    //}
           
    #endregion

           
    #region 检查设置的端口号是否正确,返回正确的端口号
           
    /// <summary>
           
    /// 检查设置的端口号是否正确,并返回正确的端口号,无效端口号返回-1。
           
    /// </summary>
           
    /// <param name="port">设置的端口号</param>
           
    publicstaticintGetValidPort(string port)
           
    {
               
    //声明返回的正确端口号
               
    int validPort =-1;
               
    //最小有效端口号
               
    constint MINPORT =0;
               
    //最大有效端口号
               
    constint MAXPORT =65535;

               
    //检测端口号
               
    try
               
    {
                   
    //传入的端口号为空则抛出异常
                   
    if(port =="")
                   
    {
                       
    thrownewException("端口号不能为空!");
                   
    }

                   
    //检测端口范围
                   
    if((Convert.ToInt32(port)< MINPORT)||(Convert.ToInt32(port)> MAXPORT))
                   
    {
                       
    thrownewException("端口号范围无效!");
                   
    }

                   
    //为端口号赋值
                    validPort
    =Convert.ToInt32(port);
               
    }
               
    catch(Exception ex)
               
    {
                   
    string errMessage = ex.Message;
               
    }
               
    return validPort;
           
    }
           
    #endregion

           
    #region 将字符串形式的IP地址转换成IPAddress对象
           
    /// <summary>
           
    /// 将字符串形式的IP地址转换成IPAddress对象
           
    /// </summary>
           
    /// <param name="ip">字符串形式的IP地址</param>       
           
    publicstaticIPAddressStringToIPAddress(string ip)
           
    {
               
    returnIPAddress.Parse(ip);
           
    }
           
    #endregion

           
    #region 获取本机的计算机名
           
    /// <summary>
           
    /// 获取本机的计算机名
           
    /// </summary>
           
    publicstaticstringLocalHostName
           
    {
                get
               
    {
                   
    returnDns.GetHostName();
               
    }
           
    }
           
    #endregion

           
    #region 获取本机的局域网IP
           
    /// <summary>
           
    /// 获取本机的局域网IP
           
    /// </summary>       
           
    publicstaticstring LANIP
           
    {
                get
               
    {
                   
    //获取本机的IP列表,IP列表中的第一项是局域网IP,第二项是广域网IP
                   
    IPAddress[] addressList =Dns.GetHostEntry(Dns.GetHostName()).AddressList;

                   
    //如果本机IP列表为空,则返回空字符串
                   
    if(addressList.Length<1)
                   
    {
                       
    return"";
                   
    }

                   
    //返回本机的局域网IP
                   
    return addressList[0].ToString();
               
    }
           
    }
           
    #endregion

           
    #region 获取本机在Internet网络的广域网IP
           
    /// <summary>
           
    /// 获取本机在Internet网络的广域网IP
           
    /// </summary>       
           
    publicstaticstring WANIP
           
    {
                get
               
    {
                   
    //获取本机的IP列表,IP列表中的第一项是局域网IP,第二项是广域网IP
                   
    IPAddress[] addressList =Dns.GetHostEntry(Dns.GetHostName()).AddressList;

                   
    //如果本机IP列表小于2,则返回空字符串
                   
    if(addressList.Length<2)
                   
    {
                       
    return"";
                   
    }

                   
    //返回本机的广域网IP
                   
    return addressList[1].ToString();
               
    }
           
    }
           
    #endregion

           
    #region 获取远程客户机的IP地址
           
    /// <summary>
           
    /// 获取远程客户机的IP地址
           
    /// </summary>
           
    /// <param name="clientSocket">客户端的socket对象</param>       
           
    publicstaticstringGetClientIP(Socket clientSocket)
           
    {
               
    IPEndPoint client =(IPEndPoint)clientSocket.RemoteEndPoint;
               
    return client.Address.ToString();
           
    }
           
    #endregion

           
    #region 创建一个IPEndPoint对象
           
    /// <summary>
           
    /// 创建一个IPEndPoint对象
           
    /// </summary>
           
    /// <param name="ip">IP地址</param>
           
    /// <param name="port">端口号</param>       
           
    publicstaticIPEndPointCreateIPEndPoint(string ip,int port)
           
    {
               
    IPAddress ipAddress =StringToIPAddress(ip);
               
    returnnewIPEndPoint(ipAddress, port);
           
    }
           
    #endregion

           
    #region 创建一个TcpListener对象
           
    /// <summary>
           
    /// 创建一个自动分配IP和端口的TcpListener对象
           
    /// </summary>       
           
    publicstaticTcpListenerCreateTcpListener()
           
    {
               
    //创建一个自动分配的网络节点
               
    IPAddress ipAddress =IPAddress.Any;
               
    IPEndPoint localEndPoint =newIPEndPoint(ipAddress,0);

               
    returnnewTcpListener(localEndPoint);
           
    }
           
    /// <summary>
           
    /// 创建一个TcpListener对象
           
    /// </summary>
           
    /// <param name="ip">IP地址</param>
           
    /// <param name="port">端口</param>       
           
    publicstaticTcpListenerCreateTcpListener(string ip,int port)
           
    {
               
    //创建一个网络节点
               
    IPAddress ipAddress =StringToIPAddress(ip);
               
    IPEndPoint localEndPoint =newIPEndPoint(ipAddress, port);

               
    returnnewTcpListener(localEndPoint);
           
    }
           
    #endregion

           
    #region 创建一个基于TCP协议的Socket对象
           
    /// <summary>
           
    /// 创建一个基于TCP协议的Socket对象
           
    /// </summary>       
           
    publicstaticSocketCreateTcpSocket()
           
    {
               
    returnnewSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
           
    }
           
    #endregion

           
    #region 创建一个基于UDP协议的Socket对象
           
    /// <summary>
           
    /// 创建一个基于UDP协议的Socket对象
           
    /// </summary>       
           
    publicstaticSocketCreateUdpSocket()
           
    {
               
    returnnewSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);
           
    }
           
    #endregion

           
    #region 获取本地终结点

           
    #region 获取TcpListener对象的本地终结点
           
    /// <summary>
           
    /// 获取TcpListener对象的本地终结点
           
    /// </summary>
           
    /// <param name="tcpListener">TcpListener对象</param>       
           
    publicstaticIPEndPointGetLocalPoint(TcpListener tcpListener)
           
    {
               
    return(IPEndPoint)tcpListener.LocalEndpoint;
           
    }

           
    /// <summary>
           
    /// 获取TcpListener对象的本地终结点的IP地址
           
    /// </summary>
           
    /// <param name="tcpListener">TcpListener对象</param>       
           
    publicstaticstringGetLocalPoint_IP(TcpListener tcpListener)
           
    {
               
    IPEndPoint localEndPoint =(IPEndPoint)tcpListener.LocalEndpoint;
               
    return localEndPoint.Address.ToString();
           
    }

           
    /// <summary>
           
    /// 获取TcpListener对象的本地终结点的端口号
           
    /// </summary>
           
    /// <param name="tcpListener">TcpListener对象</param>       
           
    publicstaticintGetLocalPoint_Port(TcpListener tcpListener)
           
    {
               
    IPEndPoint localEndPoint =(IPEndPoint)tcpListener.LocalEndpoint;
               
    return localEndPoint.Port;
           
    }
           
    #endregion

           
    #region 获取Socket对象的本地终结点
           
    /// <summary>
           
    /// 获取Socket对象的本地终结点
           
    /// </summary>
           
    /// <param name="socket">Socket对象</param>       
           
    publicstaticIPEndPointGetLocalPoint(Socket socket)
           
    {
               
    return(IPEndPoint)socket.LocalEndPoint;
           
    }

           
    /// <summary>
           
    /// 获取Socket对象的本地终结点的IP地址
           
    /// </summary>
           
    /// <param name="socket">Socket对象</param>       
           
    publicstaticstringGetLocalPoint_IP(Socket socket)
           
    {
               
    IPEndPoint localEndPoint =(IPEndPoint)socket.LocalEndPoint;
               
    return localEndPoint.Address.ToString();
           
    }

           
    /// <summary>
           
    /// 获取Socket对象的本地终结点的端口号
           
    /// </summary>
           
    /// <param name="socket">Socket对象</param>       
           
    publicstaticintGetLocalPoint_Port(Socket socket)
           
    {
               
    IPEndPoint localEndPoint =(IPEndPoint)socket.LocalEndPoint;
               
    return localEndPoint.Port;
           
    }
           
    #endregion

           
    #endregion

           
    #region 绑定终结点
           
    /// <summary>
           
    /// 绑定终结点
           
    /// </summary>
           
    /// <param name="socket">Socket对象</param>
           
    /// <param name="endPoint">要绑定的终结点</param>
           
    publicstaticvoidBindEndPoint(Socket socket,IPEndPoint endPoint)
           
    {
               
    if(!socket.IsBound)
               
    {
                    socket
    .Bind(endPoint);
               
    }
           
    }

           
    /// <summary>
           
    /// 绑定终结点
           
    /// </summary>
           
    /// <param name="socket">Socket对象</param>       
           
    /// <param name="ip">服务器IP地址</param>
           
    /// <param name="port">服务器端口</param>
           
    publicstaticvoidBindEndPoint(Socket socket,string ip,int port)
           
    {
               
    //创建终结点
               
    IPEndPoint endPoint =CreateIPEndPoint(ip, port);

               
    //绑定终结点
               
    if(!socket.IsBound)
               
    {
                    socket
    .Bind(endPoint);
               
    }
           
    }
           
    #endregion

           
    #region 指定Socket对象执行监听
           
    /// <summary>
           
    /// 指定Socket对象执行监听,默认允许的最大挂起连接数为100
           
    /// </summary>
           
    /// <param name="socket">执行监听的Socket对象</param>
           
    /// <param name="port">监听的端口号</param>
           
    publicstaticvoidStartListen(Socket socket,int port)
           
    {
               
    //创建本地终结点
               
    IPEndPoint localPoint =CreateIPEndPoint(NetHelper.LocalHostName, port);

               
    //绑定到本地终结点
               
    BindEndPoint(socket, localPoint);

               
    //开始监听
                socket
    .Listen(100);
           
    }

           
    /// <summary>
           
    /// 指定Socket对象执行监听
           
    /// </summary>
           
    /// <param name="socket">执行监听的Socket对象</param>
           
    /// <param name="port">监听的端口号</param>
           
    /// <param name="maxConnection">允许的最大挂起连接数</param>
           
    publicstaticvoidStartListen(Socket socket,int port,int maxConnection)
           
    {
               
    //创建本地终结点
               
    IPEndPoint localPoint =CreateIPEndPoint(NetHelper.LocalHostName, port);

               
    //绑定到本地终结点
               
    BindEndPoint(socket, localPoint);

               
    //开始监听
                socket
    .Listen(maxConnection);
           
    }

           
    /// <summary>
           
    /// 指定Socket对象执行监听
           
    /// </summary>
           
    /// <param name="socket">执行监听的Socket对象</param>
           
    /// <param name="ip">监听的IP地址</param>
           
    /// <param name="port">监听的端口号</param>
           
    /// <param name="maxConnection">允许的最大挂起连接数</param>
           
    publicstaticvoidStartListen(Socket socket,string ip,int port,int maxConnection)
           
    {
               
    //绑定到本地终结点
               
    BindEndPoint(socket, ip, port);

               
    //开始监听
                socket
    .Listen(maxConnection);
           
    }
           
    #endregion

           
    #region 连接到基于TCP协议的服务器
           
    /// <summary>
           
    /// 连接到基于TCP协议的服务器,连接成功返回true,否则返回false
           
    /// </summary>
           
    /// <param name="socket">Socket对象</param>
           
    /// <param name="ip">服务器IP地址</param>
           
    /// <param name="port">服务器端口号</param>    
           
    publicstatic bool Connect(Socket socket,string ip,int port)
           
    {
               
    try
               
    {
                   
    //连接服务器
                    socket
    .Connect(ip, port);

                   
    //检测连接状态
                   
    return socket.Poll(-1,SelectMode.SelectWrite);
               
    }
               
    catch(SocketException ex)
               
    {
                   
    thrownewException(ex.Message);
                   
    //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message);
               
    }
           
    }
           
    #endregion

           
    #region 以同步方式发送消息
           
    /// <summary>
           
    /// 以同步方式向指定的Socket对象发送消息
           
    /// </summary>
           
    /// <param name="socket">socket对象</param>
           
    /// <param name="msg">发送的消息</param>
           
    publicstaticvoidSendMsg(Socket socket,byte[] msg)
           
    {
               
    //发送消息
                socket
    .Send(msg, msg.Length,SocketFlags.None);
           
    }

           
    /// <summary>
           
    /// 使用UTF8编码格式以同步方式向指定的Socket对象发送消息
           
    /// </summary>
           
    /// <param name="socket">socket对象</param>
           
    /// <param name="msg">发送的消息</param>
           
    publicstaticvoidSendMsg(Socket socket,string msg)
           
    {
               
    //将字符串消息转换成字符数组
               
    byte[] buffer =ConvertHelper.StringToBytes(msg,Encoding.Default);

               
    //发送消息
                socket
    .Send(buffer, buffer.Length,SocketFlags.None);
           
    }
           
    #endregion

           
    #region 以同步方式接收消息
           
    /// <summary>
           
    /// 以同步方式接收消息
           
    /// </summary>
           
    /// <param name="socket">socket对象</param>
           
    /// <param name="buffer">接收消息的缓冲区</param>
           
    publicstaticvoidReceiveMsg(Socket socket,byte[] buffer)
           
    {
                socket
    .Receive(buffer);
           
    }

           
    /// <summary>
           
    /// 以同步方式接收消息,并转换为UTF8编码格式的字符串,使用5000字节的默认缓冲区接收。
           
    /// </summary>
           
    /// <param name="socket">socket对象</param>       
           
    publicstaticstringReceiveMsg(Socket socket)
           
    {
               
    //定义接收缓冲区
               
    byte[] buffer =newbyte[5000];
               
    //接收数据,获取接收到的字节数
               
    int receiveCount = socket.Receive(buffer);

               
    //定义临时缓冲区
               
    byte[] tempBuffer =newbyte[receiveCount];
               
    //将接收到的数据写入临时缓冲区
               
    Buffer.BlockCopy(buffer,0, tempBuffer,0, receiveCount);
               
    //转换成字符串,并将其返回
               
    returnConvertHelper.BytesToString(tempBuffer,Encoding.Default);
           
    }
           
    #endregion

           
    #region 关闭基于Tcp协议的Socket对象
           
    /// <summary>
           
    /// 关闭基于Tcp协议的Socket对象
           
    /// </summary>
           
    /// <param name="socket">要关闭的Socket对象</param>
           
    publicstaticvoidClose(Socket socket)
           
    {
               
    try
               
    {
                   
    //禁止Socket对象接收和发送数据
                    socket
    .Shutdown(SocketShutdown.Both);
               
    }
               
    catch(SocketException ex)
               
    {
                   
    throw ex;
               
    }
               
    finally
               
    {
                   
    //关闭Socket对象
                    socket
    .Close();
               
    }
           
    }
           
    #endregion

           
    #region 发送电子邮件
           
    /// <summary>
           
    /// 发送电子邮件,所有SMTP配置信息均在config配置文件中system.net节设置.
           
    /// </summary>
           
    /// <param name="receiveEmail">接收电子邮件的地址</param>
           
    /// <param name="msgSubject">电子邮件的标题</param>
           
    /// <param name="msgBody">电子邮件的正文</param>
           
    /// <param name="IsEnableSSL">是否开启SSL</param>
           
    publicstatic bool SendEmail(string receiveEmail,string msgSubject,string msgBody, bool IsEnableSSL)
           
    {
               
    //创建电子邮件对象
               
    MailMessage email =newMailMessage();
               
    //设置接收人的电子邮件地址
                email
    .To.Add(receiveEmail);
               
    //设置邮件的标题
                email
    .Subject= msgSubject;
               
    //设置邮件的正文
                email
    .Body= msgBody;
               
    //设置邮件为HTML格式
                email
    .IsBodyHtml=true;

               
    //创建SMTP客户端,将自动从配置文件中获取SMTP服务器信息
               
    SmtpClient smtp =newSmtpClient();
               
    //开启SSL
                smtp
    .EnableSsl=IsEnableSSL;

               
    try
               
    {
                   
    //发送电子邮件
                    smtp
    .Send(email);

                   
    returntrue;
               
    }
               
    catch(Exception ex)
               
    {
                   
    throw ex;
               
    }
           
    }

           
    #endregion
       
    }
    }

  • 相关阅读:
    python自动化测试应用-番外篇--接口测试2
    python自动化测试应用-番外篇--接口测试1
    篇3 安卓app自动化测试-搞定界面元素
    selenium操作拖拽实现无效果的替代方案
    python自动化测试应用-第7篇(WEB测试)--Selenium进阶篇
    python自动化测试应用-第6篇(WEB测试)--Selenium元素篇
    篇4 安卓app自动化测试-Appium API进阶
    进程和应用程序生命周期
    任务和返回栈
    activity状态变化
  • 原文地址:https://www.cnblogs.com/superstar/p/3486307.html
Copyright © 2011-2022 走看看