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); //} } }