C#Socket Clinet

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gzy11/article/details/78340944
好久没写东西了放点代码出来 大笑 大笑 大笑,服务端是自己用nodejs写的先不放出来了。都是短连接,而非长连接,适用数据量传输比较小的情况下。
同一个项目中需要使用多个socket client 基础类 ,简单点就是配置在每个子类中重写了一下。
    public class SocketClientBase
    {

        //#if DEBUG
        //        /// <summary>
        //        /// 日志服务器配置
        //        /// </summary>
        //        private static readonly string MonitorIP = "192.168.151.190";
        //        private static readonly int MonitorPort = 10100;
        //#else
        /// <summary>
        /// IP
        /// </summary>
        public string IP { get; set; }// = ConfigurationManager.AppSettings["MonitorIP"];//192.168.151.190
        public int Port { get; set; }// = int.Parse(ConfigurationManager.AppSettings["MonitorPort"]);//10100
        IPAddress ip;
        IPEndPoint ipEndPoint;
        

        //#endif
        public SocketClientBase()
        {

        }
        private void CreateIPEndPoint()
        {
             ip = IPAddress.Parse(IP);
             ipEndPoint = new IPEndPoint(ip, Port);
        }

        /// <summary>
        /// 发送socket信息不获取服务器返回信息。
        /// </summary>
        /// <param name="data"></param>
        public void SendMessage(string data)
        {
            CreateIPEndPoint();
            using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
            {
                try
                {
                    socket.Connect(ipEndPoint);
                    if (socket.Connected)
                    {
                        byte[] bytes = Encoding.UTF8.GetBytes(data);
                        socket.Send(bytes, bytes.Length, 0); //发送信息
                    }
                }
                catch (Exception)
                {
                    //throw;
                }
                finally
                {
                    socket.Close();
                    /*
                    if (socket.Connected)
                        socket.Disconnect(true);
                     */
                }

            }
        }

        /// <summary>
        /// 发送socket信息,并获得返回信息。
        /// </summary>
        /// <param name="data"></param>
        public string SendMessageResult(string data)
        {
            string result = null;
            using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
            {
                try
                {
                    socket.Connect(ipEndPoint);
                    if (socket.Connected)
                    {
                        byte[] bytes = Encoding.UTF8.GetBytes(data);
                        socket.Send(bytes, bytes.Length, 0); //发送信息

                        byte[] resultBytes = new byte[1024];
                        int len = socket.Receive(resultBytes, resultBytes.Length, 0);
                        result = Encoding.UTF8.GetString(resultBytes, 0, len);

                    }

                }
                catch (Exception)
                {
                    //throw;
                }
                finally
                {
                    socket.Close();
                    /*
                    if (socket.Connected)
                        socket.Disconnect(true);
                     */

                }
            }
            return result;
        }
    }
实列1预警的socketClinet
namespace WNSLP.Toolkits.Common.Filter 
public class SocketClient : WNSLP.Toolkits.Common.Sockets.SocketClientBase
    {
        /// <summary>
        /// 服务器配置
        /// </summary>
        private static readonly string ConnectionIP = ConfigurationManager.AppSettings["MonitorIP"];//192.168.151.190
        private static readonly int ConnectionPort = int.Parse(ConfigurationManager.AppSettings["MonitorPort"]);//10100

        private static SocketClient instance;
        public SocketClient()
        {

        }
        public static SocketClient GetInstance()
        {
            if (instance == null)
            {
                instance = new SocketClient();
                instance.IP = ConnectionIP;
                instance.Port = ConnectionPort;
            }
            return instance;
        }
}
实列2 Token的sockect 客户端
namespace WNSLP.Toolkits.Common.Token 
public class SocketClient : WNSLP.Toolkits.Common.Sockets.SocketClientBase
    {
        /// <summary>
        /// 服务器配置
        /// </summary>
        private static readonly string ConnectionIP = ConfigurationManager.AppSettings["TokenServerIP"];//192.168.151.190
        private static readonly int ConnectionPort = int.Parse(ConfigurationManager.AppSettings["TokenServerPort"]);//10100

        private static SocketClient instance;
        public SocketClient()
        {

        }
        public static SocketClient GetInstance()
        {
            if (instance == null)
            {
                instance = new SocketClient();
                instance.IP = ConnectionIP;
                instance.Port = ConnectionPort;
            }
            return instance;
        }
    }




猜你喜欢

转载自blog.csdn.net/gzy11/article/details/78340944