⚠️ Ceci est un site de traduction non officiel, sans lien avec DCMTK / OFFIS. Pour des informations faisant autorité, consultez la page originale (https://support.dcmtk.org/docs/mod_dcmnet.html).

dcmnet: bibliothèque réseau et applications utilitaires

Ce module contient un ensemble de fonctions qui implémentent la communication réseau DICOM, à savoir la machine à états finis de la couche supérieure DICOM (FSM), l'Association Control Service Element (ACSE) et le DICOM Message Service Element (DIMSE).

Les interfaces principales sont les structures et fonctions déclarées dans le fichier assoc.h et dans dimse.h.

Il existe également deux classes expérimentales pour implémenter un DICOM Service Class User et Provider :

Les classes suivantes dérivent des classes expérimentales ci-dessus et fournissent un service DICOM particulier :

Outils

Ce module contient les outils en ligne de commande suivants :

Fichiers

Les fichiers suivants fournissent une documentation complémentaire :

Exemples

L'exemple suivant montre un Echo SCU (Verification Service Class SCU) très simple. La majeure partie du code de gestion des erreurs a été omise par souci de concision, et le code spécifique à l'OS, comme l'initialisation de WinSock sous Win32, n'est pas non plus présenté.

T_ASC_Network *net; // network struct, contains DICOM upper layer FSM etc.
ASC_initializeNetwork(NET_REQUESTOR, 0, 1000 /* timeout */, &net);

T_ASC_Parameters *params; // parameters of association request
ASC_createAssociationParameters(&params, ASC_DEFAULTMAXPDU);

// set calling and called AE titles
ASC_setAPTitles(params, "ECHOSCU", "ANY-SCP", NULL);

// the DICOM server accepts connections at server.nowhere.com port 104
ASC_setPresentationAddresses(params, "localhost", "server.nowhere.com:104");

// list of transfer syntaxes, only a single entry here
const char* ts[] = { UID_LittleEndianImplicitTransferSyntax };

// add presentation context to association request
ASC_addPresentationContext(params, 1, UID_VerificationSOPClass, ts, 1);

// request DICOM association
T_ASC_Association *assoc;
if (ASC_requestAssociation(net, params, &assoc).good())
{
 if (ASC_countAcceptedPresentationContexts(params) == 1)
  {
 // the remote SCP has accepted the Verification Service Class
    DIC_US id = assoc->nextMsgID++; // generate next message ID
    DIC_US status; // DIMSE status of C-ECHO-RSP will be stored here
 DcmDataset *sd = NULL; // status detail will be stored here
 // send C-ECHO-RQ and handle response
    DIMSE_echoUser(assoc, id, DIMSE_BLOCKING, 0, &status, &sd);
 delete sd; // we don't care about status detail
  }
}
ASC_releaseAssociation(assoc); // release association
ASC_destroyAssociation(&assoc); // delete assoc structure
ASC_dropNetwork(&net); // delete net structure