示例#1
0
        /// <summary>
        /// Connection to a remote DICOM application via TLS.
        /// </summary>
        /// <param name="assoc"></param>
        /// <param name="handler"></param>
        /// <returns></returns>
        public static DicomClient ConnectTLS(AssociationParameters assoc, IDicomClientHandler handler)
        {
            DicomClient client = new DicomClient(assoc, handler);

            client.ConnectTLS();
            return(client);
        }
示例#2
0
        protected AssociationParameters(AssociationParameters parameters)
        {
            DisableNagle = NetworkSettings.Default.DisableNagle;
            RemoteMaxOperationsPerformed = 1;
            RemoteMaxOperationsInvoked   = 1;
            TotalDimseReceived           = 0;
            TotalBytesSent         = 0;
            TotalBytesRead         = 0;
            ApplicationContextName = parameters.ApplicationContextName;
            CalledAE               = parameters.CalledAE;
            CallingAE              = parameters.CallingAE;
            ImplementationClass    = parameters.ImplementationClass;
            ImplementationVersion  = parameters.ImplementationVersion;
            LocalEndPoint          = parameters.LocalEndPoint;
            LocalMaximumPduLength  = parameters.LocalMaximumPduLength;
            RemoteMaximumPduLength = parameters.RemoteMaximumPduLength;
            ReadTimeout            = parameters.ReadTimeout;
            ReceiveBufferSize      = parameters.ReceiveBufferSize;
            RemoteEndPoint         = parameters.RemoteEndPoint;
            SendBufferSize         = parameters.SendBufferSize;
            WriteTimeout           = parameters.WriteTimeout;
            ConnectTimeout         = parameters.ConnectTimeout;

            foreach (byte id in parameters._presContexts.Keys)
            {
                AddPresentationContext(id, parameters._presContexts[id].AbstractSyntax);

                foreach (TransferSyntax ts in parameters._presContexts[id].GetTransfers())
                {
                    AddTransferSyntax(id, ts);
                }

                SetRoleSelect(id, parameters._presContexts[id].GetRoleSelect());
            }
        }
示例#3
0
        private static bool NegotiateAssociation(AssociationParameters cp, ServerAssociationParameters sp)
        {
            foreach (DicomPresContext clientContext in cp.GetPresentationContexts())
            {
                TransferSyntax selectedSyntax = null;
                foreach (DicomPresContext serverContext in sp.GetPresentationContexts())
                {
                    if (clientContext.AbstractSyntax.Uid.Equals(serverContext.AbstractSyntax.Uid))
                    {
                        foreach (TransferSyntax ts in serverContext.GetTransfers())
                        {
                            if (clientContext.HasTransfer(ts))
                            {
                                selectedSyntax = ts;
                                break;
                            }
                        }
                    }

                    if (selectedSyntax != null)
                    {
                        break;
                    }
                }

                if (selectedSyntax != null)
                {
                    clientContext.ClearTransfers();
                    clientContext.AddTransfer(selectedSyntax);
                    clientContext.SetResult(DicomPresContextResult.Accept);
                }
                else
                {
                    // No contexts accepted, set if abstract or transfer syntax reject
                    clientContext.SetResult(0 == sp.FindAbstractSyntax(clientContext.AbstractSyntax)
                                                ? DicomPresContextResult.RejectAbstractSyntaxNotSupported
                                                : DicomPresContextResult.RejectTransferSyntaxesNotSupported);
                }
            }
            bool anyValidContexts = false;

            foreach (DicomPresContext clientContext in cp.GetPresentationContexts())
            {
                if (clientContext.Result == DicomPresContextResult.Accept)
                {
                    anyValidContexts = true;
                    break;
                }
            }
            if (anyValidContexts == false)
            {
                return(false);
            }

            return(true);
        }
示例#4
0
 private DicomClient(AssociationParameters assoc, IDicomClientHandler handler)
 {
     _remoteEndPoint = assoc.RemoteEndPoint;
     _socket         = null;
     _network        = null;
     _closedEvent    = null;
     _timeout        = 10;
     _handler        = handler;
     _assoc          = assoc;
 }
示例#5
0
 protected override void OnReceiveAssociateAccept(AssociationParameters association)
 {
     try
     {
         _handler.OnReceiveAssociateAccept(this, association as ClientAssociationParameters);
     }
     catch (Exception e)
     {
         OnUserException(e, "Unexpected exception on OnReceiveAssociateAccept");
     }
 }
示例#6
0
文件: PDU.cs 项目: 1059444127/XA
 public AAssociateAC(AssociationParameters assoc)
 {
     _assoc = assoc;
 }