/// <summary> /// 数据包输入 /// </summary> /// <param name="data">输入数据</param> /// <param name="socketAsync">该数据包的通讯SOCKET</param> static void BinaryInputHandler(byte[] data, int offset, int count, SocketAsyncEventArgs socketAsync) { if (socketAsync.UserToken == null) //如果此SOCKET绑定的对象为NULL { //注意这里为了 简单 所以就绑定了个 BuffList 类,本来这里应该绑定用户类对象, //并在用户类里面建立 初始化 一个 BuffList 类,这样就能通过用户类保存更多的信息了。 //比如用户名,权限等等 socketAsync.UserToken = new ZYNetRingBufferPool(409600); } //BuffList 数据包组合类 如果不想丢数据就用这个类吧 ZYNetRingBufferPool buff = socketAsync.UserToken as ZYNetRingBufferPool; buff.Write(data, offset, count); //呵呵带offset的 可以省一次copy byte[] pdata; while (buff.Read(out pdata)) { DataOn(pdata, socketAsync); } }
static void client_BinaryInput(byte[] data) { Stream.Write(data); byte[] pdata; while (Stream.Read(out pdata)) { DataOn(pdata); } }
private static void Client_BinaryInput(byte[] data) { bufferPool.Write(data); byte[] pdata; while (bufferPool.Read(out pdata)) { DataOn(pdata); } }
/// <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 { //注意这里为了 简单 所以就绑定了个 BuffList 类,本来这里应该绑定用户类对象, //并在用户类里面建立 初始化 一个 BuffList 类,这样就能通过用户类保存更多的信息了。 //比如用户名,权限等等 socketAsync.UserToken = new ZYNetRingBufferPool(409600); } //BuffList 数据包组合类 如果不想丢数据就用这个类吧 ZYNetRingBufferPool buff = socketAsync.UserToken as ZYNetRingBufferPool; if (buff != null) { buff.Write(data, offset, count); //呵呵带offset的 可以省一次copy byte[] pdata; while (buff.Read(out pdata)) { DataOn(pdata, socketAsync); } } else { UserInfo user = socketAsync.UserToken as UserInfo; if (user != null) { user.BuffPool.Write(data, offset, count); //呵呵带offset的 可以省一次copy byte[] pdata; while (user.BuffPool.Read(out pdata)) { DataOn(pdata, user); } } } } catch (Exception er) { Console.WriteLine(er.ToString()); } }