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); } }
/// <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); } } }