DicomClient
约 552 字大约 2 分钟
PACSDICOMfo-dicomC#
2026-03-20
DicomClient 是 fo-dicom 中负责和 DICOM 服务端建立关联、发送请求并接收响应的核心客户端组件。PACS 查询、验证、检索和存储这几类操作,基本都绕不开它。
1. 它负责什么
DicomClient 主要负责下面几件事:
- 与 PACS 建立和维护 DICOM 关联。
- 发送 DICOM 请求,例如 C-ECHO、C-FIND、C-MOVE、C-STORE。
- 按顺序处理请求队列。
- 接收服务端响应,并通过回调或异步流程向上层暴露结果。
- 支持异步调用,避免 UI 或主流程被网络操作阻塞。
2. 常见构建方式
var client = new DicomClient(
host,
port,
useTls,
callingAeTitle,
calledAeTitle,
requestTimeout: 5000,
releaseTimeout: 10000,
lingerTimeout: 50,
maximumNumberOfRequests: null
);参数含义通常可以这样理解:
host:PACS 地址。port:PACS 服务端口。useTls:是否启用 TLS。callingAeTitle:本地 AE Title。calledAeTitle:远端 AE Title。requestTimeout:请求建立超时。releaseTimeout:释放关联超时。lingerTimeout:处理完请求后保持关联一小段时间。maximumNumberOfRequests:单次关联中允许的请求数量上限。
3. 发送请求
最小用法就是:
await client.AddRequestAsync(request);
await client.SendAsync();同步写法也能用,但在现代应用里更推荐异步方式:
client.AddRequestSync(request);
client.SendSync();4. 使用上的核心前提
真正能不能连通,通常不只取决于代码本身,还取决于下面几项是否一致:
- IP 和端口是否正确。
- Calling AE Title 是否符合对端配置。
- Called AE Title 是否匹配目标服务。
- 对端是否允许当前主机访问。
- TLS、传输语法和请求模型是否匹配。
如果这些概念还不够清楚,建议先回看前面的通讯基础章节: