Пример #1
0
        protected override void OnReceived(EndPoint endpoint, byte[] buffer, long offset, long size)
        {
            // Continue receive datagrams.
            if (size == 0)
            {
                // Important: Receive using thread pool is necessary here to avoid stack overflow with Socket.ReceiveFromAsync() method!
                ThreadPool.QueueUserWorkItem(o => { ReceiveAsync(); });
            }
            if (size > 0)
            {
                if (!Session.TryGetValue(endpoint, out Kcp kcp))
                {
                    kcp = Kcp.Create(userData: endpoint);
                    kcp.SetOutput(KcpSend);
                    Session.Add(endpoint, kcp);
                }
                kcp.Input(buffer);

                // Echo the message back to the sender
                kcp.Send(buffer.AsSpan().Slice((int)offset, (int)size));
            }
        }
Пример #2
0
 public KcpTestClient(string address, int port, int messages) : base(address, port)
 {
     _messages = messages;
     kcp       = Kcp.Create();
     kcp.SetOutput(KcpOutput);
 }