示例#1
0
        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(">");
            }
        }
示例#2
0
 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(">");
     }
 }
示例#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.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(" > ");
            }
        }
示例#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.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);
            }
        }