示例#1
0
        // Event Handlers
        private void Socket_OnReceive(IAsyncResult result)
        {
            IPEndPoint endpoint = null;

            byte[] data = Listener.EndReceive(result, ref endpoint);

            if (!Disposing && Started)
            {
                LastAsyncReceiveOp = Listener.BeginReceive(Socket_OnReceive, null);

                lock (Clients)
                {
                    Client           c;
                    UdpClientBackend backend;

                    if (ClientMapping.TryGetValue(endpoint, out c))
                    {
                        backend = c.Backend as UdpClientBackend;
                        backend?.OnRx(data);
                    }
                    else
                    {
                        backend = new UdpClientBackend(Listener, endpoint);
                        c       = new Client(backend);
                        Clients.Add(c);
                        ClientMapping.Add(endpoint, c);

                        backend.OnRx(data);
                    }
                }
            }
        }
示例#2
0
        public Client(IPAddress address, ushort port, bool udpBackend = false)
        {
            NetstClientBackend backend;

            Outgoing = true;

            if (udpBackend)
            {
                backend = new UdpClientBackend(address, port);
            }
            else
            {
                backend = new TcpClientBackend(address, port);
            }

            Backend = backend;
        }