コード例 #1
0
    static void Net_Test3_2_PlainTcp_Server_AcceptQueue()
    {
        using (var listener = LocalNet.CreateTcpListener(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(">");
        }
    }
コード例 #2
0
 static void Net_Test3_PlainTcp_Server()
 {
     using (var listener = LocalNet.CreateTcpListener(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(">");
     }
 }
コード例 #3
0
    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.CreateTcpListener(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(" > ");
        }
    }
コード例 #4
0
    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.CreateTcpListener(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);
        }
    }