static void Net_Test3_2_PlainTcp_Server_AcceptQueue() { using (var listener = LocalNet.CreateListener(new TcpListenParam(null, null, 9821))) { Task acceptTask = TaskUtil.StartAsyncTaskAsync(async() => { // Accept ループタスク while (true) { ConnSock sock = await listener.AcceptNextSocketFromQueueUtilAsync(); TaskUtil.StartAsyncTaskAsync(async(obj) => { using (ConnSock s = (ConnSock)obj !) { var stream = s.GetStream(); StreamWriter w = new StreamWriter(stream); while (true) { w.WriteLine(DateTimeOffset.Now._ToDtStr(true)); await w.FlushAsync(); await Task.Delay(100); } } }, sock)._LaissezFaire(); } }); Con.ReadLine(">"); } }
static void Net_Test3_PlainTcp_Server() { using (var listener = LocalNet.CreateListener(new TcpListenParam( async(listener2, sock) => { sock.StartPCapRecorder(new PCapFileEmitter(new PCapFileEmitterOptions(new FilePath(@"c:\tmp\190611\" + Str.DateTimeToStrShortWithMilliSecs(DateTime.Now) + ".pcapng", flags: FileFlags.AutoCreateDirectory)))); var stream = sock.GetStream(); StreamWriter w = new StreamWriter(stream); while (true) { w.WriteLine(DateTimeOffset.Now._ToDtStr(true)); await w.FlushAsync(); await Task.Delay(100); } }, null, 9821))) { Con.ReadLine(">"); } }
static void Net_Test11_AcceptLoop() { if (test11_flag == false) { test11_flag = true; new ThreadObj(param => { ThreadObj.Current.Thread.Priority = System.Threading.ThreadPriority.Highest; int last = 0; while (true) { int value = Environment.TickCount; int span = value - last; last = value; Console.WriteLine("tick: " + span); ThreadObj.Sleep(100); } }); } using (var listener = LocalNet.CreateListener(new TcpListenParam( async(listener2, sock) => { while (true) { var stream = sock.GetStream(); StreamReader r = new StreamReader(stream); while (true) { string?line = await r.ReadLineAsync(); if (line._IsEmpty()) { break; } } int segmentSize = 400; int numSegments = 1000; int totalSize = segmentSize * numSegments; string ret = $@"HTTP/1.1 200 OK Content-Length: {totalSize} "; await stream.WriteAsync(ret._GetBytes_Ascii()); byte[] buf = Util.Rand(numSegments); for (int i = 0; i < numSegments; i++) { await stream.WriteAsync(buf); } } }, null, 80))) { Con.ReadLine(" > "); } }
static void Net_Test12_AcceptLoop2(int port = 80) { new ThreadObj(param => { ThreadObj.Current.Thread.Priority = System.Threading.ThreadPriority.Highest; int last = 0; while (true) { int value = Environment.TickCount; int span = value - last; last = value; long mem = mem = GC.GetTotalMemory(false); try { Console.WriteLine("tick: " + span + " mem = " + mem / 1024 / 1024 + " sock = " + LocalNet.GetOpenedSockCount()); } catch { } ThreadObj.Sleep(100); } }); if (true) { NetTcpListener listener = LocalNet.CreateListener(new TcpListenParam( async(listener2, sock) => { while (true) { var stream = sock.GetStream(); StreamReader r = new StreamReader(stream); while (true) { string?line = await r.ReadLineAsync(); if (line._IsEmpty()) { break; } } int segmentSize = 400; int numSegments = 1000; int totalSize = segmentSize * numSegments; string ret = $@"HTTP/1.1 200 OK Content-Length: {totalSize} "; await stream.WriteAsync(ret._GetBytes_Ascii()); byte[] buf = Util.Rand(numSegments); for (int i = 0; i < numSegments; i++) { await stream.WriteAsync(buf); } } }, null, port)); listener.HideAcceptProcError = true; ThreadObj.Sleep(-1); } }