Esempio n. 1
0
 public async Task SendAsync(byte[] datagram, IPEndpoint remoteEndpoint)
 {
     foreach (UdpClient client in _clients)
     {
         await client.SendAsync(datagram, remoteEndpoint);
     }
 }
Esempio n. 2
0
        protected override Response SendRequest(Request request)
        {
            // RFC1035 max. size of a UDP datagram is 512 bytes
            byte[] responseMessage = new byte[512];

            for (int intAttempts = 0; intAttempts < Options.RetryCount; intAttempts++)
            {
                using (var datagramSocket = m_datagramSocketFactory.CreateDatagramSocket(Options.Timeout))
                {
                    try
                    {
                        var address = IPAddress.Parse(DnsServerEndpoint.Address.ToString());
                        var endpoint = new IPEndpoint(address, (ushort)DnsServerEndpoint.Port);
                        datagramSocket.SendTo(request.Data, endpoint);
                        int intReceived = datagramSocket.Receive(responseMessage);
                        byte[] data = new byte[intReceived];
                        Array.Copy(responseMessage, data, intReceived);
                        Response response = new Response(DnsServerEndpoint, data);
                        CacheResponse(response);
                        return response;
                    }
                    catch (Exception/*SocketException*/)
                    {
                        continue;
                    }
                    finally
                    {
                        IncrementSequenceNumber();
                    }
                }
            }
            Response responseTimeout = new Response();
            responseTimeout.Error = "Timeout Error";
            return responseTimeout;
        }
Esempio n. 3
0
        public async Task <IEnumerable <WifiBridgeInfo> > DiscoverAsync(TimeSpan timeout)
        {
            var client          = _networkService.CreateUdpBroadcastClient(48899);
            var receivedPackets = new List <UdpReceiveResult>();

            CancellationTokenSource tokenSource = new CancellationTokenSource();

            DiscoverReceive(client, receivedPackets, tokenSource.Token);

            // ReSharper disable MethodSupportsCancellation
            int loops = (int)timeout.TotalMilliseconds / 50;

            byte[]     discoveryPacket = Encoding.UTF8.GetBytes("Link_Wi-Fi");
            IPEndpoint endpoint        = new IPEndpoint(IPAddress.Broadcast, 48899);

            for (int i = 0; i < loops; i++)
            {
                await client.SendAsync(discoveryPacket, endpoint);

                await Task.Delay(50);
            }

            await Task.Delay(200);

            // ReSharper restore MethodSupportsCancellation

            tokenSource.Cancel();
            client.Dispose();

            return(ParseReceivedDiscoveryPackets(receivedPackets));
        }
Esempio n. 4
0
        private static Uri GetUri(IPEndpoint endpoint)
        {
            var uriScheme = endpoint.Port == 443 ? "https" : "http";
            var uriString = String.Format(CultureInfo.InvariantCulture, "{0}://{1}:{2}", uriScheme, endpoint.Address, endpoint.Port);
            var result    = new Uri(uriString);

            return(result);
        }
Esempio n. 5
0
 public TCPEvent(DateTime timestamp, UInt32 resourceId, SocketEventType type,
                 IPEndpoint localEndpoint, IPEndpoint remoteEndpoint)
 {
     this.timestamp      = timestamp;
     this.resourceId     = resourceId;
     this.type           = type;
     this.localEndpoint  = localEndpoint;
     this.remoteEndpoint = remoteEndpoint;
 }
Esempio n. 6
0
        public BrowserPageArgs(IServiceProvider serviceProvider, AppViewModel appViewModel, IPEndpoint endpoint)
            : base(serviceProvider, appViewModel)
        {
            if (endpoint == null)
            {
                throw new ArgumentNullException("endpoint");
            }

            m_endpoint = endpoint;
        }
Esempio n. 7
0
        public UdpDnsResolver(DnsResolverOptions options, IDatagramSocketFactory datagramSocketFactory, IPEndpoint dnsServerEndpoint, Random random = null)
            : base(options, dnsServerEndpoint, random)
        {
            if (datagramSocketFactory == null)
            {
                throw new ArgumentNullException("datagramSocketFactory");
            }

            m_datagramSocketFactory = datagramSocketFactory;
        }
Esempio n. 8
0
        public TcpDnsResolver(DnsResolverOptions options, IStreamSocketFactory streamSocketFactory, IPEndpoint dnsServerEndpoint, Random random = null)
            : base(options, dnsServerEndpoint, random)
        {
            if (streamSocketFactory == null)
            {
                throw new ArgumentNullException("streamSocketFactory");
            }

            m_streamSocketFactory = streamSocketFactory;
        }
Esempio n. 9
0
        public void NavigateToBrowserPage(IPEndpoint endpoint)
        {
            if (endpoint == null)
            {
                throw new ArgumentNullException("endpoint");
            }

            if (!Frame.Navigate(typeof(BrowserPage), new BrowserPageArgs(m_serviceProvider, this, endpoint)))
            {
                throw new Exception("Failed to create browser page");
            }
        }
Esempio n. 10
0
        public Response()
        {
            Questions = new List<Question>();
            Answers = new List<AnswerRR>();
            Authorities = new List<AuthorityRR>();
            Additionals = new List<AdditionalRR>();

            Server = new IPEndpoint(new IPAddress(0), 0);
            Error = String.Empty;
            MessageSize = 0;
            TimeStamp = DateTime.Now;
            header = new Header();
        }
Esempio n. 11
0
        public Response()
        {
            Questions   = new List <Question>();
            Answers     = new List <AnswerRR>();
            Authorities = new List <AuthorityRR>();
            Additionals = new List <AdditionalRR>();

            Server      = new IPEndpoint(new IPAddress(0), 0);
            Error       = String.Empty;
            MessageSize = 0;
            TimeStamp   = DateTime.Now;
            header      = new Header();
        }
Esempio n. 12
0
        public Rtu(string name, IPEndpoint hostAddres, ushort localDNP3Addres, ushort remoteDNP3Address)
        {
            //Considerando uma RTU por Canal
            Channel = Core.DNP3Manager.AddTCPServer(name, LogLevels.ALL, ServerAcceptMode.CloseExisting, hostAddres.address, hostAddres.port, ChannelListener.Print());
            Config  = new OutstationStackConfig();
            Config.databaseTemplate = new DatabaseTemplate(4, 0, 1, 1, 1, 1, 1, 0, 0);
            Config.databaseTemplate.analogs[0].clazz  = PointClass.Class2;
            Config.outstation.config.allowUnsolicited = false;
            Config.link.remoteAddr = remoteDNP3Address;
            Config.link.localAddr  = localDNP3Addres;

            Outstation = Channel.AddOutstation(name, RejectingCommandHandler.Instance, DefaultOutstationApplication.Instance, Config);
            Outstation.Enable();
        }
Esempio n. 13
0
        protected DnsResolverBase(DnsResolverOptions options, IPEndpoint dnsServerEndpoint, Random random = null)
        {
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }
            if (dnsServerEndpoint == null)
            {
                throw new ArgumentNullException("dnsServerEndpoint");
            }

            m_options = options;
            m_dnsServerEndpoint = dnsServerEndpoint;
            m_sequenceNumber = (ushort)(random ?? new Random()).Next();
        }
Esempio n. 14
0
        protected DnsResolverBase(DnsResolverOptions options, IPEndpoint dnsServerEndpoint, Random random = null)
        {
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }
            if (dnsServerEndpoint == null)
            {
                throw new ArgumentNullException("dnsServerEndpoint");
            }

            m_options           = options;
            m_dnsServerEndpoint = dnsServerEndpoint;
            m_sequenceNumber    = (ushort)(random ?? new Random()).Next();
        }
Esempio n. 15
0
File: Rtu.cs Progetto: AKllX/Gemini
        public Rtu(int id, string name, IPEndpoint clientAddress, IPEndpoint hostAddres, ushort localDNP3Addres, ushort remoteDNP3Address,
            Dictionary<int, int> bins, Dictionary<int, int> analogs, Dictionary<int, int> counters, DatabaseTemplate dt, GeminiMap gmap)
        {
            Id = id;
            Name = name;
            //Considerando uma RTU por Canal
            if (Core.LoggingEnabled)
            {
                Channel = Core.DNP3Manager.AddTCPServer(name, LogLevels.ALL, ServerAcceptMode.CloseExisting, hostAddres.address, hostAddres.port, ChannelListener.Print());
            }
            else
            {
                Channel = Core.DNP3Manager.AddTCPServer(name, LogLevels.NONE, ServerAcceptMode.CloseExisting, hostAddres.address, hostAddres.port, ChannelListener.Print());
            }

            //Configuração Padrão de RTU é Outstation
            Config = new OutstationStackConfig
            {
                databaseTemplate = dt
            };
            Config.link.remoteAddr = remoteDNP3Address;
            Config.link.localAddr = localDNP3Addres;
            DNP3ToSNMPBinaries = bins;
            DNP3ToSNMPAnalogs = analogs;
            DNP3ToSNMPCounters = counters;
            Outstation = Channel.AddOutstation(name, RejectingCommandHandler.Instance, DefaultOutstationApplication.Instance, Config);
            Outstation.Enable();
            geminiMap = gmap;

            Target = new SnmpTarget(clientAddress.address, clientAddress.port, Core.Settings.SNMPTimeout, Core.Settings.SNMPRetry);

            foreach (KeyValuePair<int, int> map in DNP3ToSNMPBinaries)
            {
                Target.InsertObject(Core.OidLibrary.GetLabelFromId(map.Value), Core.OidLibrary.GetOidFromId(map.Value));
            }

            foreach (KeyValuePair<int, int> map in DNP3ToSNMPAnalogs)
            {
                Target.InsertObject(Core.OidLibrary.GetLabelFromId(map.Value), Core.OidLibrary.GetOidFromId(map.Value));
            }

            foreach (KeyValuePair<int, int> map in DNP3ToSNMPCounters)
            {
                Target.InsertObject(Core.OidLibrary.GetLabelFromId(map.Value), Core.OidLibrary.GetOidFromId(map.Value));
            }

            MonitorThread = new Timer(new TimerCallback(Update), null, TimeSpan.FromMilliseconds(10), TimeSpan.FromSeconds(Core.Settings.GatewayPoolingTime));
        }
Esempio n. 16
0
        public ScanNetworkResult(Protocol protocol, IPEndpoint endpoint, string hostName, bool isAvailable)
        {
            if (endpoint == null)
            {
                throw new ArgumentNullException("endpoint");
            }
            if (hostName != null && String.IsNullOrWhiteSpace(hostName))
            {
                throw new ArgumentException("Invalid host name", "hostName");
            }

            m_protocol    = protocol;
            m_endpoint    = endpoint;
            m_hostName    = hostName;
            m_isAvailable = isAvailable;
        }
Esempio n. 17
0
        public static void ScanNetwork(CancellationToken userToken, DnsResolverBase resolver, IPAddressRange addresses, INetworkServiceCore[] networkServices, IProgress <ScanNetworkBatch> progress)
        {
            if (resolver == null)
            {
                throw new ArgumentNullException("resolver");
            }
            if (addresses == null)
            {
                throw new ArgumentNullException("addresses");
            }
            if (networkServices == null)
            {
                throw new ArgumentNullException("networkServices");
            }
            if (progress == null)
            {
                throw new ArgumentNullException("progress");
            }

            var nestedTasks = new List <Task>();
            var chunkSize   = GetChunkSize(addresses);

            foreach (var addressChunk in addresses.Chunk(chunkSize))
            {
                userToken.ThrowIfCancellationRequested();

                var nestedTask = Task.Factory.StartNew(() =>
                {
                    foreach (var address in addressChunk)
                    {
                        var results = new List <ScanNetworkResult>();
                        foreach (var networkService in networkServices)
                        {
                            userToken.ThrowIfCancellationRequested();

                            var endpoint = new IPEndpoint(address, networkService.Port);
                            var result   = ScanEndpoint(userToken, resolver, networkService.Protocol, endpoint);
                            results.Add(result);
                        }
                        progress.Report(new ScanNetworkBatch(results.ToArray()));
                    }
                });
                nestedTasks.Add(nestedTask);
            }
            Task.WaitAll(nestedTasks.ToArray(), userToken);
        }
Esempio n. 18
0
        private static string GetHostName(DnsResolverBase resolver, IPEndpoint endpoint)
        {
            if (resolver == null)
            {
                return(null);
            }

            var result = resolver.GetHostName(endpoint.Address);

#if SCREENSHOT
            if (result != null)
            {
                result = result.Replace("example.com", "my-domain-name");
            }
#endif
            return(result);
        }
Esempio n. 19
0
            public void SendTo(byte[] data, IPEndpoint endpoint)
            {
                Task.Factory.StartNew(async() =>
                {
                    //try
                    //{
                    await m_socket.ConnectAsync(endpoint.Address.HostName, endpoint.Port.ToString(CultureInfo.InvariantCulture));
                    //}
                    //catch (Exception ex)
                    //{
                    //    Logger.Trace("ConnectAsync failed: {0}", ex);
                    //    throw;
                    //}

                    var writer = new DataWriter(m_socket.OutputStream);
                    writer.WriteBytes(data);
                    await writer.StoreAsync();
                });
            }
Esempio n. 20
0
        static int Main(string[] args)
        {
            if (args.Length != 3)
            {
                Console.WriteLine("usage: CLRMasterGPRSTLSDemo.exe <ca certificate> <certificate chain> <private key>");
                return(-1);
            }

            var caCertificate    = args[0];
            var certificateChain = args[1];
            var privateKey       = args[2];

            var manager = DNP3SessionManagerFactory.CreateManager(4, new PrintingLogAdapter());

            var listener = manager.CreateListener(
                "listener",
                LogLevels.ALL,
                IPEndpoint.Localhost(20001),
                new TLSConfig(caCertificate, certificateChain, privateKey, 2),
                new DefaultListenCallbacks()
                );

            Console.WriteLine("Enter a command");

            while (true)
            {
                switch (Console.ReadLine())
                {
                case "x":
                    // The manager does not automatically reclaim resources for stop executing threads in a finalizer
                    // Be sure to call this before exiting to cleanup all resources.
                    manager.Shutdown();
                    return(0);

                default:
                    break;
                }
            }
        }
Esempio n. 21
0
        static void Main(string[] args)
        {
            Core.Start();

            SnmpTarget retAbelSantana = new SnmpTarget("10.7.5.150");

            retAbelSantana.InsertObject("batteryTemperaturesValue", ".1.3.6.1.4.1.12148.10.10.7.5.0");
            SnmpV2Packet result     = retAbelSantana.GetUpdate();
            IPEndpoint   myEndPoint = new IPEndpoint("0.0.0.0", 20500);
            Rtu          rtu        = new Rtu("Teste DNP3", myEndPoint, 2, 1);
            ChangeSet    changeSet;
            int          currentValue;

            while (true)
            {
                if (result != null)
                {
                    changeSet = new ChangeSet();
                    if (result.Pdu.ErrorStatus != 0)
                    {
                        Console.WriteLine("Error in SNMP reply. Error {0} index {1}",
                                          result.Pdu.ErrorStatus,
                                          result.Pdu.ErrorIndex);
                    }
                    else
                    {
                        currentValue = Convert.ToInt32(result.Pdu.VbList[0].Value.ToString());
                        changeSet.Update(new Analog(currentValue, 1, DateTime.Now), 0);
                        Console.WriteLine("Atualizando valor da analógica para " + currentValue);
                        rtu.Outstation.Load(changeSet);
                    }
                }
                else
                {
                    Console.WriteLine("Erro SNMP Nulo");
                }
                Thread.Sleep(15000);
            }
        }
Esempio n. 22
0
        static int Main(string[] args)
        {
            var manager = DNP3ManagerFactory.CreateManager(4, new PrintingLogAdapter());

            var listener = manager.CreateListener("listener", LogLevels.ALL, IPEndpoint.Localhost(20000), new DefaultListenCallbacks());

            Console.WriteLine("Enter a command");

            while (true)
            {
                switch (Console.ReadLine())
                {
                case "x":
                    // The manager does not automatically reclaim resources for stop executing threads in a finalizer
                    // Be sure to call this before exiting to cleanup all resources.
                    manager.Shutdown();
                    return(0);

                default:
                    break;
                }
            }
        }
Esempio n. 23
0
        public Response(IPEndpoint endpoint, byte[] data)
        {
            Error = String.Empty;
            Server = endpoint;
            TimeStamp = DateTime.Now;
            MessageSize = data.Length;
            RecordReader rr = new RecordReader(data);

            Questions = new List<Question>();
            Answers = new List<AnswerRR>();
            Authorities = new List<AuthorityRR>();
            Additionals = new List<AdditionalRR>();

            header = new Header(rr);

            //if (header.RCODE != RCode.NoError)
            //	Error = header.RCODE.ToString();

            for (int intI = 0; intI < header.QDCOUNT; intI++)
            {
                Questions.Add(new Question(rr));
            }

            for (int intI = 0; intI < header.ANCOUNT; intI++)
            {
                Answers.Add(new AnswerRR(rr));
            }

            for (int intI = 0; intI < header.NSCOUNT; intI++)
            {
                Authorities.Add(new AuthorityRR(rr));
            }
            for (int intI = 0; intI < header.ARCOUNT; intI++)
            {
                Additionals.Add(new AdditionalRR(rr));
            }
        }
Esempio n. 24
0
        public Response(IPEndpoint endpoint, byte[] data)
        {
            Error       = String.Empty;
            Server      = endpoint;
            TimeStamp   = DateTime.Now;
            MessageSize = data.Length;
            RecordReader rr = new RecordReader(data);

            Questions   = new List <Question>();
            Answers     = new List <AnswerRR>();
            Authorities = new List <AuthorityRR>();
            Additionals = new List <AdditionalRR>();

            header = new Header(rr);

            //if (header.RCODE != RCode.NoError)
            //	Error = header.RCODE.ToString();

            for (int intI = 0; intI < header.QDCOUNT; intI++)
            {
                Questions.Add(new Question(rr));
            }

            for (int intI = 0; intI < header.ANCOUNT; intI++)
            {
                Answers.Add(new AnswerRR(rr));
            }

            for (int intI = 0; intI < header.NSCOUNT; intI++)
            {
                Authorities.Add(new AuthorityRR(rr));
            }
            for (int intI = 0; intI < header.ARCOUNT; intI++)
            {
                Additionals.Add(new AdditionalRR(rr));
            }
        }
Esempio n. 25
0
        protected override Response SendRequest(Request request)
        {
            // RFC1035 max. size of a UDP datagram is 512 bytes
            byte[] responseMessage = new byte[512];

            for (int intAttempts = 0; intAttempts < Options.RetryCount; intAttempts++)
            {
                using (var datagramSocket = m_datagramSocketFactory.CreateDatagramSocket(Options.Timeout))
                {
                    try
                    {
                        var address  = IPAddress.Parse(DnsServerEndpoint.Address.ToString());
                        var endpoint = new IPEndpoint(address, (ushort)DnsServerEndpoint.Port);
                        datagramSocket.SendTo(request.Data, endpoint);
                        int    intReceived = datagramSocket.Receive(responseMessage);
                        byte[] data        = new byte[intReceived];
                        Array.Copy(responseMessage, data, intReceived);
                        Response response = new Response(DnsServerEndpoint, data);
                        CacheResponse(response);
                        return(response);
                    }
                    catch (Exception /*SocketException*/)
                    {
                        continue;
                    }
                    finally
                    {
                        IncrementSequenceNumber();
                    }
                }
            }
            Response responseTimeout = new Response();

            responseTimeout.Error = "Timeout Error";
            return(responseTimeout);
        }
Esempio n. 26
0
        public UdpDnsResolver(DnsResolverOptions options, IDatagramSocketFactory datagramSocketFactory, IPEndpoint dnsServerEndpoint, Random random = null)
            : base(options, dnsServerEndpoint, random)
        {
            if (datagramSocketFactory == null)
            {
                throw new ArgumentNullException("datagramSocketFactory");
            }

            m_datagramSocketFactory = datagramSocketFactory;
        }
Esempio n. 27
0
 public async Task SendAsync(byte[] datagram, IPEndpoint remoteEndpoint)
 {
     await _client.SendAsync(datagram, datagram.Length, new IPEndPoint(System.Net.IPAddress.Parse(remoteEndpoint.Address), remoteEndpoint.Port));
 }
Esempio n. 28
0
 public Task SendAsync(byte[] datagram, IPEndpoint remoteEndpoint)
 {
     throw new NotImplementedException();
 }
Esempio n. 29
0
 public IUdpClient CreateUdpClient(IPEndpoint localEndpoint)
 {
     return(new UdpClient(localEndpoint));
 }
Esempio n. 30
0
 public UdpReceiveResult(byte[] data, IPEndpoint remoteEndpoint)
 {
     Data           = data;
     RemoteEndpoint = remoteEndpoint;
 }
Esempio n. 31
0
        private static ScanNetworkResult ScanEndpoint(CancellationToken userToken, DnsResolverBase resolver, Protocol protocol, IPEndpoint endpoint)
        {
            var status   = Ping.PerformPing(endpoint, protocol);
            var hostName = status ? GetHostName(resolver, endpoint) : null;
            var result   = new ScanNetworkResult(protocol, endpoint, hostName, status);

            return(result);
        }
Esempio n. 32
0
        public TcpDnsResolver(DnsResolverOptions options, IStreamSocketFactory streamSocketFactory, IPEndpoint dnsServerEndpoint, Random random = null)
            : base(options, dnsServerEndpoint, random)
        {
            if (streamSocketFactory == null)
            {
                throw new ArgumentNullException("streamSocketFactory");
            }

            m_streamSocketFactory = streamSocketFactory;
        }
Esempio n. 33
0
 public UdpClient(IPEndpoint localEndpoint)
 {
     _client = new System.Net.Sockets.UdpClient(new IPEndPoint(System.Net.IPAddress.Parse(localEndpoint.Address), localEndpoint.Port));
     //_client = new System.Net.Sockets.UdpClient(localEndpoint.Host, localEndpoint.Port);
 }
Esempio n. 34
0
 public void SendTo(byte[] data, IPEndpoint endpoint)
 {
     m_socketFactory.m_sendToInvokedHandler(data, endpoint);
 }
Esempio n. 35
0
        static void Main(string[] args)
        {
            PacketStream stream = new PacketStream();

            IPEndpoint localEndpoint  = new IPEndpoint("169.254.2.2", 27516);
            IPEndpoint remoteEndpoint = new IPEndpoint("169.254.2.1", 1056);

            int n = 1;

            IPPacket p = new IPPacket(n++, 1, PacketDirection.PACKET_DIRECTION_OUTGOING, localEndpoint, remoteEndpoint,
                                      NewArrayIncremental(6, 10));

            stream.AppendPacket(p);

            p = new IPPacket(n++, 1, PacketDirection.PACKET_DIRECTION_OUTGOING, localEndpoint, remoteEndpoint,
                             NewArrayIncremental(3, 35));
            stream.AppendPacket(p);

            p = new IPPacket(n++, 1, PacketDirection.PACKET_DIRECTION_OUTGOING, localEndpoint, remoteEndpoint,
                             NewArrayIncremental(1, 60));
            stream.AppendPacket(p);

            p = new IPPacket(n++, 1, PacketDirection.PACKET_DIRECTION_OUTGOING, localEndpoint, remoteEndpoint,
                             NewArrayIncremental(1, 200));
            stream.AppendPacket(p);

            p = new IPPacket(n++, 1, PacketDirection.PACKET_DIRECTION_OUTGOING, localEndpoint, remoteEndpoint,
                             NewArrayIncremental(3, 210));
            stream.AppendPacket(p);

            p = new IPPacket(n++, 1, PacketDirection.PACKET_DIRECTION_OUTGOING, localEndpoint, remoteEndpoint,
                             NewArrayIncremental(1, 70));
            stream.AppendPacket(p);

            p = new IPPacket(n++, 1, PacketDirection.PACKET_DIRECTION_OUTGOING, localEndpoint, remoteEndpoint,
                             NewArrayIncremental(1, 80));
            stream.AppendPacket(p);

            Debug.Assert(stream.Position == 0, "Position != 0");
            Debug.Assert(stream.Length == 16, "Length != 16");

            byte[] buf = new byte[stream.Length];
            Debug.Assert(stream.Read(buf, 0, 16) == 16, "Read() != 16");
            byte[] expectedBytes = new byte[] { 10, 11, 12, 13, 14, 15,
                                                35, 36, 37,
                                                60,
                                                200,
                                                210, 211, 212,
                                                70,
                                                80 };

            Debug.Assert(CompareByteArrays(buf, expectedBytes), "Content after first read is not as expected");

            Debug.Assert(stream.Position == 16, "Position != 16");

            Debug.Assert(stream.Read(buf, 0, 10) == 0, "Read at offset 16 doesn't return 0");

            stream.Seek(-1, SeekOrigin.Current);
            Debug.Assert(stream.Read(buf, 2, 100) == 1, "Read at offset 15 doesn't return 1");

            Debug.Assert(buf[2] == 80, "Byte at offset 15 isn't 80");

            stream.Seek(-16, SeekOrigin.Current);
            Debug.Assert(stream.Position == 0, "Position != 0 after reverse seek");

            stream.Position = 9;
            Debug.Assert(stream.Read(buf, 1, 1) == 1, "Read at Position=9 didn't yield 1 byte");
            Debug.Assert(buf[1] == 60, "buf[1] != 60");

            stream.Position = 13;
            Debug.Assert(stream.Read(buf, 5, 4) == 3, "Read at Position=13 didn't yield 3 bytes");
            Debug.Assert(buf[5] == 212, "buf[5] != 212");
            Debug.Assert(buf[6] == 70, "buf[5] != 70");
            Debug.Assert(buf[7] == 80, "buf[5] != 80");

            System.Console.WriteLine("All tests passed");
            System.Console.ReadKey();
        }
Esempio n. 36
0
 public VisualSession(IPSession session)
 {
     localEndpoint  = session.LocalEndpoint;
     remoteEndpoint = session.RemoteEndpoint;
     transactions   = new List <VisualTransaction>();
 }