0

根据已知主机列表验证请求的 DICOM 连接的首选方法是什么?我可以连接到 EVT_CONN_OPEN 事件。但在这方面,event.assoc.requestor.info.ae_title 元素始终为空 (b'')。我从 TCP 网络分析中看到,名称已传输。那么,它在哪里呢?验证请求主机的正确方法是什么?

4

2 回答 2

0

您可以尝试EVT_REQUESTED改用,它会在接收/发送关联请求后触发,并且此时应该可以使用 AE 标题信息。不幸EVT_CONN_OPEN的是,在关联请求之前发生的 TCP 连接上触发。

如果您不喜欢主机的详细信息,您可以使用处理程序发送关联拒绝消息,使用event.assoc.acse.send_reject()或使用event.assoc.abort () 中止。

如果您只对验证 AE 标题感兴趣,您可以使用AE.require_calling_aet属性将关联限制为与匹配 AE 标题的关联。

于 2020-04-22T11:15:43.837 回答
0

为了方便其他人查找此内容,查找此内容的正确阶段是在 EVT_REQUESTED 事件中。但是,您可能会发现未填写详细信息(在调用处理程序之后填充它们)。

因此,如果您想在 EVT_REQUESTED 中定位调用者 AE,则需要定位 A_ASSOCIATE 原语并从那里读取它们。因此,例如在您的处理程序中,您可以这样做来拒绝遥控器:

def handle_request(event):
    req_title = event.assoc.requestor.primitive.calling_ae_title.decode('ascii')
    if req_title != 'MyAET':
        event.assoc.acse.send_reject(0x01, 0x01, 0x03)
        return

至少对于 1.5.7。

于 2021-07-16T19:51:18.727 回答