pynetdicom SCP如何正确获取A-ASSOCIATE-RQ中calling/called_ae_title
问题原因
你手动实例化了一个全新的A_ASSOCIATE_RQ对象,该对象的属性均为默认初始化值,无法获取到客户端发送的真实请求数据,你需要使用pynetdicom框架实际接收到的关联请求PDU实例。
正确实现方式
通过框架提供的关联接收事件回调获取真实参数即可,示例代码如下:
from pynetdicom import AE, evt # 关联请求接收回调 def handle_associate_request(event): # 从事件关联对象中获取客户端发送的原始请求参数 calling_ae_title = event.assoc.requestor.calling_ae_title.decode().strip() called_ae_title = event.assoc.requestor.called_ae_title.decode().strip() # 此处可添加审计逻辑 print(f"Calling AE Title: {calling_ae_title}") print(f"Called AE Title: {called_ae_title}") # 返回True允许关联建立,返回False则拒绝关联 return True # 你的原有SCP初始化逻辑 ae = AE() # 添加支持的Presentation Context(此处按你原有逻辑实现即可) # ae.add_supported_context(...) # 绑定事件回调 event_handlers = [ (evt.EVT_ASSOCIATE_RECEIVED, handle_associate_request), # 其他业务事件回调可在此继续添加 ] # 启动SCP服务,参数按你原有配置调整即可 ae.start_server( ("0.0.0.0", 11112), handlers=event_handlers, ae_title="PYDS", require_called_aet=False )
补充说明
如果需要在后续业务处理回调(如C-STORE、C-FIND等请求的处理函数)中获取这两个参数,也可以直接通过对应事件的event.assoc.requestor属性获取,和关联阶段拿到的数值完全一致。
内容的提问来源于stack exchange,提问作者peep
相关产品推荐
相关产品推荐

