Sends a C-STORE-REQ message to a peer member of a connection defined by Scp.
Scp
The peer connection to send the C-STORE-REQ to.
DicomFile
The DICOM file to send.
Exceptions
Exception | Description |
---|---|
System.IO.FileNotFoundException | Thrown when DicomFile does not exist |
System.ArgumentNullException | Thrown when SCP is null. |
The file can be a single DICOM file or a DICOMDIR file. If the file is a DICOMDIR all files in the DICOM will be sent.
Stores a local file to a remote DICOM server.
using Leadtools;
using Leadtools.Dicom.Scu;
using Leadtools.Dicom.Scu.Common;
using Leadtools.Dicom;
using Leadtools.Dicom.Common.DataTypes;
public void StoreFile()
{
DicomEngine.Startup();
DicomNet.Startup();
StoreScu storeFile = new StoreScu();
DicomScp scp = new DicomScp();
//
// Change these parameters to reflect the calling AETitle.
//
storeFile.AETitle = "LEAD_CLIENT";
storeFile.HostPort = 1000;
storeFile.HostAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork);
//
// Change these parameters to reflect the called AETitle (server).
//
scp.AETitle = "MI_SERVER";
scp.Port = 104;
scp.Timeout = 60;
scp.PeerAddress = IPAddress.Parse("10.1.1.96");
storeFile.ReceiveBuffer += new ReceiveBufferDelegate(storeFile_ReceiveBuffer);
storeFile.BeforeCStore += new BeforeCStoreDelegate(storeFile_BeforeCStore);
storeFile.AfterCStore += new AfterCStoreDelegate(storeFile_AfterCStore);
storeFile.Compression = Compression.Lossless;
string fileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.dcm");
storeFile.Store(scp, fileName);
DicomNet.Shutdown();
DicomEngine.Shutdown();
}
void storeFile_ReceiveBuffer(object sender, ReceiveBufferEventArgs e)
{
Console.WriteLine("{0} bytes of data received", e.BufferSize);
}
void storeFile_BeforeCStore(object sender, BeforeCStoreEventArgs e)
{
//
// Stop storing if we received an error
//
if (e.Error != null)
e.Skip = SkipMethod.AllFiles;
}
void storeFile_AfterCStore(object sender, AfterCStoreEventArgs e)
{
string msg;
msg = string.Format("{0} store complete. Status: {1}", e.FileInfo.FullName, e.Status);
Console.WriteLine(msg);
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
Imports Leadtools
Imports Leadtools.Dicom.Scu
Imports Leadtools.Dicom.Scu.Common
Imports Leadtools.Dicom
Imports Leadtools.Dicom.Common.DataTypes
Public Sub StoreFile()
DicomEngine.Startup()
DicomNet.Startup()
Dim cstore As StoreScu = New StoreScu()
Dim scp As DicomScp = New DicomScp()
'
' Change these parameters to reflect the calling AETitle.
'
cstore.AETitle = "LEAD_CLIENT"
cstore.HostPort = 1000
cstore.HostAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(Function(ip) ip.AddressFamily = AddressFamily.InterNetwork)
'
' Change these parameters to reflect the called AETitle (server).
'
scp.AETitle = "MI_SERVER"
scp.Port = 104
scp.Timeout = 60
scp.PeerAddress = IPAddress.Parse("10.1.1.96")
AddHandler cstore.ReceiveBuffer, AddressOf cstore_ReceiveBuffer
AddHandler cstore.BeforeCStore, AddressOf cstore_BeforeCStore
AddHandler cstore.AfterCStore, AddressOf cstore_AfterCStore
cstore.Compression = Compression.Lossless
cstore.Store(scp, Path.Combine(LEAD_VARS.ImagesDir, "Image1.dic"))
DicomNet.Shutdown()
DicomEngine.Shutdown()
End Sub
Private Sub cstore_ReceiveBuffer(ByVal sender As Object, ByVal e As ReceiveBufferEventArgs)
Console.WriteLine("{0} bytes of data received", e.BufferSize)
End Sub
Private Sub cstore_BeforeCStore(ByVal sender As Object, ByVal e As BeforeCStoreEventArgs)
'
' Stop storing if we received an error
'
If Not e.Error Is Nothing Then
e.Skip = SkipMethod.AllFiles
End If
End Sub
Private Sub cstore_AfterCStore(ByVal sender As Object, ByVal e As AfterCStoreEventArgs)
Dim msg As String
msg = String.Format("{0} store complete. Status: {1}", e.FileInfo.FullName, e.Status)
Console.WriteLine(msg)
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document