public bool Connection(string host, int port) { if (!IsConnect) { ResRetrunDiy = new ConcurrentDictionary <string, ResReturn>(); Stream = new ZYNetRingBufferPoolV2(1024 * 1024 * 30); Client = new SocketClient(); Client.BinaryInput += Client_BinaryInput; Client.MessageInput += Client_MessageInput; if (Client.Connect(host, port)) { IsConnect = true; Client.StartRead(); return(true); } else { return(false); } } else { return(true); } }
/// <summary> /// 数据包输入 /// </summary> /// <param name="data">输入数据</param> /// <param name="socketAsync">该数据包的通讯SOCKET</param> static void BinaryInputHandler(byte[] data, int offset, int count, SocketAsyncEventArgs socketAsync) { try { if (socketAsync.UserToken == null) //如果此SOCKET绑定的对象为NULL { //注意这里为了 简单 所以就绑定了个 ZYNetBufferReadStreamV2 类,本来这里应该绑定用户类对象, //并在用户类里面建立 初始化 一个 ZYNetBufferReadStreamV2 类,这样就能通过用户类保存更多的信息了。 //比如用户名,权限等等 socketAsync.UserToken = new ZYNetRingBufferPoolV2(4096000); } ZYNetRingBufferPoolV2 stream = socketAsync.UserToken as ZYNetRingBufferPoolV2; //最新的数据包整合类 stream.Write(data, offset, count); byte[] datax; while (stream.Read(out datax)) { DataOn(datax, socketAsync); } } catch (Exception er) { Console.WriteLine(er.ToString()); } }
static SocketManager() { Stream = new ZYNetRingBufferPoolV2(40960); client = new SocketClient(); client.BinaryInput += new ClientBinaryInputHandler(client_BinaryInput); client.ErrorLogOut += new ErrorLogOutHandler(client_ErrorLogOut); client.MessageInput += new ClientMessageInputHandler(client_MessageInput); }
static SocketManager() { //初始化数据包缓冲区,并设置了最大数据包尽可能的大 BuffListManger = new ZYNetRingBufferPoolV2(400000); client = new SocketClient(); client.DataOn += new DataOn(client_DataOn); client.Disconnection += new ExceptionDisconnection(client_Disconnection); }
public ClientInfo(string host, int port, int regipport, int bindminPort, int bindMaxPort, int resCount, string mac) { ResetConnt = resCount; ConnUserList = new ConcurrentDictionary <string, ConClient>(); //初始化客户端列表 ProxyList = new ConcurrentDictionary <string, ConClient>(); Key = Guid.NewGuid().ToString(); //产生唯一标示KEY Bufferlist = new ZYNetRingBufferPoolV2(); UserMaskList = new ConcurrentQueue <string>(); BindPort = new Random().Next(bindminPort, bindMaxPort); this.Host = host; this.Port = port; this.RegIpPort = regipport; this.Mac = mac; }
/// <summary> /// 数据包输入 /// </summary> /// <param name="data">输入数据</param> /// <param name="socketAsync">该数据包的通讯SOCKET</param> void BinaryInputHandler(byte[] data, int offset, int count, SocketAsyncEventArgs socketAsync) { try { ZYNetRingBufferPoolV2 stream = socketAsync.UserToken as ZYNetRingBufferPoolV2; if (stream != null) { //最新的数据包整合类 stream.Write(data, offset, count); byte[] datax; while (stream.Read(out datax)) { LogOnPack(datax, socketAsync); } } else { UserManager userinfo = socketAsync.UserToken as UserManager; userinfo.Stream.Write(data, offset, count); byte[] datax; while (userinfo.Stream.Read(out datax)) { DataOn(datax, userinfo); } } } catch (Exception er) { AddLog(er.ToString()); server.Disconnect(socketAsync.AcceptSocket); } }