Windows 下的 dcmqrscp 中接收到的值 callingPresentationAddress 不正确
Incorrect received value callingPresentationAddress in dcmqrscp under Windows
TL;DR:
当我在 Windows 7 x64(官方当前 3.6.2 二进制文件)下 运行 dcmqrscp
时,服务器无法识别传入 echoscu
客户端的 IP。相反,callingPresentationAddress
的值设置为 www
或 name_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 机器的 运行,而不是 localhost
或 127.0.0.1
,callingPresentationAddress
的值是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 中的文档。
TL;DR:
当我在 Windows 7 x64(官方当前 3.6.2 二进制文件)下 运行 dcmqrscp
时,服务器无法识别传入 echoscu
客户端的 IP。相反,callingPresentationAddress
的值设置为 www
或 name_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 机器的 运行,而不是 localhost
或 127.0.0.1
,callingPresentationAddress
的值是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 中的文档。