【发布时间】:2020-09-21 12:48:26
【问题描述】:
【问题讨论】:
【问题讨论】:
此答案适用于 fo-DICOM 的旧版本(4.0.1.0 或附近)。在最新版本中,此答案中提到的类和方法已被弃用。
使用DicomClient.Send的重载方法,INetworkStream可以在作为SCU使用fo-DICOM的同时提供本地输出端口。
例如,有四种方法可用于将 CSTORE 作为 SCU。前两个是:
public void Send(string host, int port, bool useTls, string callingAe, string calledAe, int millisecondsTimeout = 5000);
public Task SendAsync(string host, int port, bool useTls, string callingAe, string calledAe, int millisecondsTimeout = 5000);
host 和 port 是远程主机和远程端口。它都不接受IPEndPoint 作为参数。
现在,看看其他两种方法:
public void Send(INetworkStream stream, string callingAe, string calledAe, int millisecondsTimeout = 5000);
public Task SendAsync(INetworkStream stream, string callingAe, string calledAe, int millisecondsTimeout = 5000);
那些接受INetworkStream,如下所示:
public interface INetworkStream : IDisposable
{
string LocalHost { get; }
int LocalPort { get; }
string RemoteHost { get; }
int RemotePort { get; }
Stream AsStream();
}
这允许向您提供LocalPort。您需要为该接口编写实现。不确定DesktopNetworkStream(INetworkStream的实现)是否可以直接使用。
【讨论】:
您提出了issue on github。以下是那里的反馈:
目前不支持此功能。您可以通过实现自己的
NetworkManager来解决此限制,并从现有的DesktopNetworkManager和DesktopNetworkStream中汲取灵感。在DesktopNetworkStream中,创建了TcpClient。这是您需要进行自定义更改的地方。
查看那里的reply to my comment,看来问题现已修复,该功能现已可用。
【讨论】: