Newer
Older
SensorHub / SensorHub.Servers / Client.cs
root on 17 Sep 2021 3 KB first commit
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SuperSocket.ClientEngine;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
using System.Runtime.Caching;
using System.Configuration;
using SuperSocket.SocketBase;
using System.Net.Sockets;
using System.IO;

namespace SensorHub.Servers
{
    public class Client
    {
        public EasyClient client = new EasyClient();
        //private static MemoryCache memoryCache = new MemoryCache("Client");//往flume发送不缓存了
        private object SyncObj = new object();
        //private CasicSession session = new CasicSession();

        private readonly static String thirdpartyIP = 
            ConfigurationManager.AppSettings["ThirdpartyIP"];
        private readonly static int thirdpartyPORT =
            Convert.ToInt32(ConfigurationManager.AppSettings["ThirdpartyPORT"]);

        //public Client(CasicSession session)
        //{
        //    this.session = session;
        //}

        public bool InitClient()
        {
            if(client.IsConnected)
            {
                return true; 
            }

            //Initialize the client with the receive filter and request handler
            client.Initialize(new ClientReceiveFilter(), (request) =>
            {
                //session.Logger.Info("第三方返回的数据:" + request.Key + "," + request.Body);
            });

            IPEndPoint ipport = new IPEndPoint(IPAddress.Parse(thirdpartyIP), thirdpartyPORT);
            Task task = client.ConnectAsync(ipport);
            task.Wait();

            if (client.IsConnected)
            {
                return true;
            }
            
            return false;
        }


        //public void SendMessage(string message)
        //{
        //    try
        //    {
        //        if (client.IsConnected)
        //        {
        //            byte[] byteMessage = Encoding.Default.GetBytes(message + "\r\n");
        //            client.Send(byteMessage);

        //            //Thread.Sleep(5000);//不异步
        //            client.Close();//发完即关闭连接
        //        }
        //        else//未完待续
        //        {
        //            //session.Logger.Info("与第三方连接未建立!");
        //        }

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

        //}



        //public void SetMessageCache(string key,string value)
        //{
        //    //对发送的数据进行缓存,直至发送失败丢弃
        //    var item = memoryCache.Get(key);
        //    if (item != null && (String)item == value)
        //    {
        //        session.Logger.Info("Client缓存中已存在该数据,丢弃");
        //        return ;
        //    }
        //    else
        //    {
        //        lock (this.SyncObj)//锁定
        //        {
        //            item = memoryCache.Get(key);
        //            if (item != null && (String)item == value)
        //            {
        //                session.Logger.Info("Client缓存中已存在该数据,丢弃");
        //                return;
        //            }

        //            var cachePolicy = new CacheItemPolicy();
        //            cachePolicy.AbsoluteExpiration = 
        //                DateTimeOffset.Now.Add(TimeSpan.FromMinutes(60));
        //            memoryCache.Set(key, value, cachePolicy);
        //        }
        //    }
        //}

        //public string GetMessageCache(string key)
        //{
        //    return (string)memoryCache.Get(key);
        //}

        //public string RemoveMessageCache(string key)
        //{
        //    return (string)memoryCache.Remove(key);
        //} 
    }
}