Beispiel #1
0
        /// <summary>
        /// セグメント送信実装.
        /// </summary>
        /// <param name="segment"></param>
        protected virtual void OnSendSegment(Segment segment)
        {
            // 疑似パケット順番入れ替え

            if (!this.IsConnected || segment is AcknowledgementSegment)
            {
                using (var ws = new MemoryStream())
                {
                    Console.WriteLine("Send Segment [{0}]", segment.ToString());
                    segment.WriteBytes(ws);
                    var bytes = ws.GetBuffer();
                    var length = ws.Position;
                    this.Udp.Send(bytes, (int)length);
                }
            }
            else
            {
                if (isValid)
                {
                    using (var ws = new MemoryStream())
                    {
                        {
                            Console.WriteLine("Send Segment [{0}]", segment.ToString());
                            segment.WriteBytes(ws);
                            var bytes = ws.GetBuffer();
                            var length = ws.Position;
                            this.Udp.Send(bytes, (int)length);
                        }
                    }

                    using (var ws = new MemoryStream())
                    {
                        if (TempQueue.Count > 0)
                        {
                            var s = TempQueue.Dequeue();
                            Console.WriteLine("Send Segment [{0}]", s.ToString());
                            s.WriteBytes(ws);
                            var bytes = ws.GetBuffer();
                            var length = ws.Position;
                            this.Udp.Send(bytes, (int)length);
                        }
                    }
                }
                else
                {
                    isValid = true;
                    TempQueue.Enqueue(segment);
                }
            }
        }
Beispiel #2
0
            protected override void OnSendSegment(Segment segment)
            {
                Console.WriteLine("Send Segment [{0}]", segment.ToString());

                using (var ws = new MemoryStream())
                {
                    segment.WriteBytes(ws);
                    var bytes = ws.GetBuffer();
                    var length = ws.Position;
                    this.Udp.Send(bytes, (int)length, this.RemoteEp);
                }
            }
Beispiel #3
0
        /// <summary>
        /// セグメント送信実装.
        /// </summary>
        /// <param name="segment"></param>
        protected virtual void OnSendSegment(Segment segment)
        {
            // 疑似パケットロス発生

            if (isValid)
            {
                using (var ws = new MemoryStream())
                {
                    segment.WriteBytes(ws);
                    var bytes = ws.GetBuffer();
                    var length = ws.Position;
                    this.Udp.Send(bytes, (int)length);
                }
            }
            else
            {
                // TODO
                isValid = true;
            }
        }