public static Message <Request> ReadAssociationRequest(NetworkBinaryReader dr) { var rq = new Request(); rq.PresentationContexts = new List <PresentationContext>(); dr.Skip(1); //PDU ID and Reserved Null Byte int length = LengthReader.ReadBigEndian(dr.Take(4)); using (DICOMBinaryReader sub = dr.GetSubStream(length)) { rq.ProtocolVersion = LengthReader.ReadBigEndian(sub, 2); sub.Skip(2); //Reserved Null Bytes rq.CalledEntityTitle = sub.ReadString(16).Trim(); rq.CallingEntityTitle = sub.ReadString(16).Trim(); sub.Skip(32); //Reserved Null Bytes rq.ApplicationContext = ItemReader.ReadApplicationContext(sub); while (sub.Peek(1)[0] == (byte)ItemType.PRESENTATION_CONTEXT_REQUEST) { PresentationContext context = ItemReader.ReadPresentationCtxRequest(sub); rq.PresentationContexts.Add(context); } rq.UserInfo = ItemReader.ReadUserInfo(sub); } return(new Message <Request> { Payload = rq, Type = MessageType.PDU }); }