コード例 #1
0
ファイル: IcmpTracertSender.cs プロジェクト: hellxcz/NetWorks
        public void Send(IcmpEchoSender.SendEchoInfo info, Action <IList <SendResult <IcmpEchoResponseDatagram> > > finished)
        {
            IPEndPoint endPoint = null;

            var finishedResult = new List <SendResult <IcmpEchoResponseDatagram> >();

            var senderImpl = new IcmpTracertSenderImpl();

            var lastTtl = 1;

            var manualResetevent = new ManualResetEvent(false);

            while (endPoint == null || endPoint.Address != info.IpAddress)
            {
                senderImpl.Send(new SendTracertInfo(info, lastTtl++),
                                result =>
                {
                    endPoint = result.EndPoint as IPEndPoint;

                    finishedResult.Add(result);

                    manualResetevent.Set();
                });

                info.IncreaseSequence();

                manualResetevent.WaitOne();
                manualResetevent.Reset();
            }

            senderImpl.CloseHost();

            finished(finishedResult);
        }
コード例 #2
0
ファイル: IcmpTracertSender.cs プロジェクト: hellxcz/NetWorks
        public void Send(IcmpEchoSender.SendEchoInfo info, Action<IList<SendResult<IcmpEchoResponseDatagram>>> finished)
        {
            IPEndPoint endPoint = null;

            var finishedResult = new List<SendResult<IcmpEchoResponseDatagram>>();

            var senderImpl = new IcmpTracertSenderImpl();

            var lastTtl = 1;

            var manualResetevent = new ManualResetEvent(false);

            while (endPoint == null || endPoint.Address != info.IpAddress)
            {
                senderImpl.Send(new SendTracertInfo(info, lastTtl++),
                                result =>
                                    {
                                        endPoint = result.EndPoint as IPEndPoint;

                                        finishedResult.Add(result);

                                        manualResetevent.Set();
                                    });

                info.IncreaseSequence();

                manualResetevent.WaitOne();
                manualResetevent.Reset();
            }

            senderImpl.CloseHost();

            finished(finishedResult);
        }