繁体   English   中英

fo-DICOM:如何在 DicomClient 中指定本地传出端口?

[英]fo-DICOM: How to specify the local outgoing port in DicomClient?

TcpClient可以按照此处所述分配本地传出端口。

fo-DICOM DicomClient是否可以具有相同的功能?

这是必要的,因为服务器仅侦听来自特定客户端端口的连接。

此答案适用于旧版本(4.0.1.0 或附近)的 fo-DICOM。 对于最新版本,不推荐使用此答案中提到的类和方法。


使用DicomClient.Send方法的重载, INetworkStream可用于提供本地传出端口,同时使用 fo-DICOM 作为 SCU。

例如,有四种方法可用于 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);

hostport是远程主机和远程端口。 它们都不接受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 您需要为该接口编写实现。 不确定是否可以直接使用DesktopNetworkStreamINetworkStream的实现)。

您已在 github 上提出问题 以下是那里的反馈:

目前不支持此功能。 您可以通过实现自己的NetworkManager并从现有的DesktopNetworkManagerDesktopNetworkStream中汲取大量灵感来解决此限制。 DesktopNetworkStream中,创建了TcpClient 这是您需要进行自己的自定义更改的地方。

看看那里对我的评论的回复,看来问题现在已经解决并且该功能现在可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM