Windows 下的 dcmqrscp 中接收到的值 callingPresentationAddress 不正确

Incorrect received value callingPresentationAddress in dcmqrscp under Windows

TL;DR:

当我在 Windows 7 x64(官方当前 3.6.2 二进制文件)下 运行 dcmqrscp 时,服务器无法识别传入 echoscu 客户端的 IP。相反,callingPresentationAddress 的值设置为 wwwname_of_localhost,具体取决于关联连接的以太网接口。

完整描述

dcmqrscp 配置文件的内容:

NetworkTCPPort  = 11113
MaxPDUSize      = 16384
MaxAssociations = 16
HostTable BEGIN

archive = (ARCHIVE, localhost, 11113)
client1 = (CLIENT1, 146.147.51.82, 12345)
client2 = (CLIENT2, www, 12345)
clients = client1, client2
HostTable END

AETable BEGIN
ARCHIVE   c:/tmp/dcm   RW (100, 1024mb)   clients
AETable END

我从 145.146.51.82 上的 Debian 机器连接到服务器:

echoscu -d 146.147.51.30 11113 -aec ARCHIVE -aet CLIENT1

服务器输出如下:

D: $dcmtk: dcmqrscp v3.6.2 2017-07-14 $
D: 
D: setting network send timeout to 60 seconds
D: setting network receive timeout to 60 seconds
D: PDU Type: Associate Request, PDU Length: 205 + 6 bytes PDU header
(...)
D: Parsing an A-ASSOCIATE PDU
I: Association Received (www:CLIENT1 -> ARCHIVE)
D: Parameters:
D: ====================== BEGIN A-ASSOCIATE-RQ =====================
(...)
D: ======================= END A-ASSOCIATE-RQ ======================
D: Peer www:CLIENT1 is not not permitted to access ARCHIVE (see configuration file)
I: Refusing Association (BadAEService)

如果我将 echoscu 的调用 AE 切换为 CLIENT2,答案是肯定的。这是因为配置文件中的行 client2 = (CLIENT2, www, 12345)

如果 echoscu 是来自同一 Windows 机器的 运行,而不是 localhost127.0.0.1callingPresentationAddress 的值是name_of_localhost.

中描述了此问题

相反的方向(echoscu 在 Windows,dcmqrscp 在 Debian)一切都是正确的:

Association Received (146.147.51.30:CLIENT1 -> ARCHIVE)

我怀疑问题与我的 Windows 配置错误有关,但我不知道该如何解决。

如果主机名与连接到 dcmqrscp 的系统的 IP 地址相关联(本地或通过 DNS 的相应条目),则此主机名用于匹配 "HostTable" 配置文件的一部分。如果此主机名查找不可用(或被 dcmqrscp 的选项 -dhl 禁用),则使用 IP 地址代替。这可能不是很直观,但据我所知在过去 20 + x 年(左右)中从未改变过。

有关详细信息,请参阅 dcmqrcnf.txt 中的文档。