⚠️ Este é um site de tradução não oficial, sem relação com o DCMTK / OFFIS. Para informações oficiais, consulte a página original (https://support.dcmtk.org/docs/mod_dcmnet.html).

dcmnet: biblioteca de rede e aplicativos utilitários

Este módulo contém um conjunto de funções que implementam a comunicação em rede DICOM, ou seja, a máquina de estados finitos da camada superior DICOM (FSM), o Association Control Service Element (ACSE) e o DICOM Message Service Element (DIMSE).

As principais interfaces são as estruturas e funções declaradas no arquivo assoc.h e em dimse.h.

Também existem duas classes experimentais para implementar um DICOM Service Class User e Provider:

As classes a seguir derivam das classes experimentais acima e fornecem um serviço DICOM específico:

Ferramentas

Este módulo contém as seguintes ferramentas de linha de comando:

Arquivos

Os arquivos a seguir fornecem documentação adicional:

Exemplos

O exemplo a seguir mostra um Echo SCU (Verification Service Class SCU) muito simples. A maior parte do código de tratamento de erros foi omitida por questão de concisão, e o código específico do sistema operacional, como a inicialização do WinSock no Win32, também não é apresentado.

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