/// <summary> /// 数据包输入 /// </summary> /// <param name="data">输入数据</param> /// <param name="socketAsync">该数据包的通讯SOCKET</param> static async void BinaryInputHandler(ISockAsyncEvent socketAsync) { var fiberRw = await socketAsync.GetFiberRw <string>(); fiberRw.UserToken = "my is ttk"; for (; ;) { //try //{ // //读取 发送 测试 // var data = await fiberRw.ReadToBlockArrayEnd(); // fiberRw.Write(data); // await fiberRw.FlushAsync(); //} //catch (SocketException) //{ // break; //} //catch (Exception er) //{ // Console.WriteLine(er.ToString()); // break; //} try { //提供2种数据 读取写入方式 using (ReadBytes readBytes = new ReadBytes(fiberRw)) { await readBytes.Init(); DataOn(readBytes, fiberRw); } await DataOnByLine(fiberRw); } catch (System.Net.Sockets.SocketException) { break; } catch (Exception er) { Console.WriteLine(er.ToString()); break; } } socketAsync.Disconnect(); }
async void BinaryInputHandler(ISockAsyncEvent socketAsync) { var fiberRw = await socketAsync.GetFiberRw <HttpToken>(); fiberRw.UserToken = new HttpToken(); using (var data_r = fiberRw.GetMemory(4096)) using (var data_w = fiberRw.GetMemory(4096)) { for (; ;) { await HttpHandler.Receive(fiberRw, data_r.Memory, data_w.Memory); } } }
async void BinaryInputHandler(ISockAsyncEvent socketAsync) { var fiberRw = await socketAsync.GetFiberRw <HttpToken>(); fiberRw.UserToken = new HttpToken { Db = new RawDb(new ConcurrentRandom(), Npgsql.NpgsqlFactory.Instance) }; using var data_r = fiberRw.GetMemory(1024); using var write = new WriteBytes(fiberRw); for (; ;) { await HttpHandler.Receive(fiberRw, data_r.Memory, write); } }
async void BinaryInputHandler(ISockAsyncEvent socketAsync) { var fiberRw = await socketAsync.GetFiberRw <HttpToken>(); fiberRw.UserToken = new HttpToken { Db = new RawDb(new ConcurrentRandom(), Npgsql.NpgsqlFactory.Instance) }; using (var data_r = fiberRw.GetMemory(4096)) using (var data_w = fiberRw.GetMemory(16384)) { for (; ;) { await HttpHandler.Receive(fiberRw, data_r.Memory, data_w.Memory); } } }
private static async void Client_BinaryInput(ISocketClient client, ISockAsyncEvent socketAsync) { var fiberRw = await socketAsync.GetFiberRw(); client.SetConnected(); while (true) { try { await DataOnByLine(fiberRw); } catch { break; } } client.ShutdownBoth(true); }
private static void Client_Disconnect(ISocketClient client, ISockAsyncEvent socketAsync, string msg) { Console.WriteLine(msg); }
/// <summary> /// 用户断开代理(你可以根据socketAsync 读取到断开的 /// </summary> /// <param name="message">断开消息</param> /// <param name="socketAsync">断开的SOCKET</param> /// <param name="erorr">错误的ID</param> static void DisconnectHandler(string message, ISockAsyncEvent socketAsync, int erorr) { Console.WriteLine(message); socketAsync.UserToken = null; socketAsync.AcceptSocket?.Dispose(); }
/// <summary> /// 用户连接的代理 /// </summary> /// <param name="socketAsync">连接的SOCKET</param> /// <returns>如果返回FALSE 则断开连接,这里注意下 可以用来封IP</returns> static bool ConnectionFilter(ISockAsyncEvent socketAsync) { Console.WriteLine("UserConn {0}", socketAsync.AcceptSocket.RemoteEndPoint.ToString()); return(true); }
void DisconnectHandler(string message, ISockAsyncEvent socketAsync, int erorr) { socketAsync.UserToken = null; socketAsync.AcceptSocket.Dispose(); }
bool ConnectionFilter(ISockAsyncEvent socketAsync) => true;