var client = new DicomClient();
var pcs = DicomPresentationContext.GetScpRolePresentationContextsFromStorageUids(
DicomStorageCategory.Image,
DicomTransferSyntax.ExplicitVRLittleEndian,
DicomTransferSyntax.ImplicitVRLittleEndian,
DicomTransferSyntax.ImplicitVRBigEndian);
client.AdditionalPresentationContexts.AddRange(pcs);
DicomDataset dataset = null;
client.OnCStoreRequest = request =>
{
dataset = request.Dataset;
return new DicomCStoreResponse(request, DicomStatus.Success);
};
var get = new DicomCMoveRequest(QRServer,
StudyId,
SeriesUd);
var handle = new ManualResetEventSlim();
get.OnResponseReceived = (request, response) =>
{
handle.Set();
};
client.AddRequest(get);
client.Send(ipAddress, 104, false, AEClient, QRServer);
handle.Wait();
Thread.Sleep(10000);
In the above code snippet if AEClient & QRServer are same /same AETitle ,CMoveResponse succeded but not getting any CStoreRequest
If AEClient & QRServer are different , getting error like Move destination Unknown
There are several DICOM-Protocols how to request data: C-Get and C-Move. they behave completely different. See for example here for a good explanation: https://saravanansubramanian.com/dicomtutorials/
A C-Move requests tells the server to send the images to a specific AETitle (the MoveDestination) in a new association. So you have to start a new instance of a StoreSCP server to receive the image. Therefore the server of course has to know the AETitle because from the MoveDestination the server has to know the IP and Port, too.
A C-Get on the other hand returns the data on the same accociation. In that case you will get the OnCStoreRequestCallback invoked.