根据已知主机列表验证请求的DICOM连接的首选方法是什么?我可以连接到EVT_CONN_OPEN事件。但在这种情况下,event.assoc.requestor.info.ae_title元素始终为空(b'')。我从TCP网络分析中看到,该名称已传输。那么,它在哪里呢?验证请求主机的正确方法是什么?
发布于 2020-04-22 19:15:44
您可以尝试使用EVT_REQUESTED,它在收到/发送关联请求后触发,此时AE标题信息应该可用。不幸的是,EVT_CONN_OPEN是在TCP连接上触发的,而TCP连接发生在关联请求之前。
如果您不喜欢主机的详细信息,可以使用处理程序通过event.assoc.acse.send_reject()发送关联拒绝消息,或者使用event.assoc.abort()发送abort。
如果您只对验证AE标题感兴趣,那么可以使用AE.require_calling_aet属性将关联限制到具有匹配AE标题的那些标题。
发布于 2021-07-17 03:51:19
为了便于其他人查找,正确的查找阶段是在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。
https://stackoverflow.com/questions/61361210
复制相似问题