引言


  经过前面几篇的介绍,DIMSE-C 消息服务这块已经讲解了差不多了,还剩最后一个 C-Echo 消息服务,这个服务相对前面的4个服务来说更简单一些,本文结合开源 DICOM 库 fo-dicom 详细介绍一下 C-Echo 服务。

C-Echo 消息服务

  首先来看一下 DICOM 标准中的描述:

The C-ECHO service is invoked by a DIMSE-service-user to verify end-to-end communications with a peer DIMSE-service-user. It is a confirmed service.

  C-Echo 服务就是用来验证两个同等的 DIMSE-service-user 之间端到端的通信是否成功。在实际场景中,用来验证两个 PACS 系统之间或设备和 PACS 系统之间的通信是否成功。
  C-Echo 服务的流程图比较简单,如下:

C-Echo Flowchart

C-Echo SCU

  借助开源 DICOM 库 fo-dicom 封装的 DicomCEchoRequest.cs,实现 C-Echo SCU 的代码如下:

using Dicom.Network;
using System;
static void Main(string[] args)
{var client = new DicomClient();client.NegotiateAsyncOps();var request = new DicomCEchoRequest();request.OnResponseReceived += (DicomCEchoRequest req, DicomCEchoResponse response) =>{Console.WriteLine("C-Echo Status: " + response.Status);};client.AddRequest(request);client.Send({C-Echo SCP IP}, {C-Echo SCP Port}, false, {C-Echo SCU AE Title}, {C-Echo SCP AE Title});Console.ReadLine();
}
  • C-Echo SCP IP:C-Echo 服务端的 IP 地址或机器名;
  • C-Echo SCP Port:C-Echo 服务端的端口;
  • C-Echo SCU AE Title:C-Echo 客户端应用实体的名称;
  • C-Echo SCP AE Title:C-Echo 服务端应用实体的名称;

C-Echo SCP

  实现 C-Echo SCP 的代码参考如下:

using Dicom.Network;
using System;
static void Main(string[] args)
{var server = DicomServer.Create<DicomCEchoProvider>(104);Console.ReadLine();
}

C-Echo 过程分析

  C-Echo 的交互过程比较简单,完整的数据包详见下图:

C-Echo Packet

  • 最上面红色框内的三行是建立 TCP 连接(三次握手)的过程;
  • 接着蓝色框内的两行是两个 AE 建立 Association 连接的过程;
  • 中间黄色框内的两行是两个 AE 之间 C-Echo 请求和响应的过程;
  • 最后面的蓝色框内的两行是两个 AE 通过 A-RELEASE 请求交互释放 Association 连接的过程;

  下图是 C-Echo Response 数据包的详细内容,可以看到里面包含 C-Echo 请求的结果,Success 说明两边的通信是正常的。

C-Echo Response

以上就是针对 C-Echo 消息服务数据包的完整分析。

作者:Statmoon
链接:https://www.jianshu.com/p/ef577f069f4b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

【转】05.Dicom 学习笔记-DICOM C-Echo 消息服务相关推荐

  1. 【转】Dicom 学习笔记-Dicom 消息服务(DIMSE-C/DIMSE-N)

    转自:https://www.jianshu.com/p/2812b0b6e548 引言   DICOM(Digital Imaging and Communications in Medicine) ...

  2. Dicom 学习笔记-Dicom 消息服务(DIMSE-C/DIMSE-N)

    引言   DICOM(Digital Imaging and Communications in Medicine)医学数字成像与通信,是医疗影像领域一个非常重要的标准,本文主要简单介绍 DICOM ...

  3. 【转】04.Dicom 学习笔记-DICOM C-Move 消息服务

    引言   前篇介绍了 DICOM C-Get 消息服务,本文结合开源 DICOM 库 fo-dicom 详细介绍一下 C-Move 服务. C-Move 消息服务   C-Move 服务可以用来获取影 ...

  4. 【转】03.Dicom 学习笔记-DICOM C-Get 消息服务

    转自:https://www.jianshu.com/p/c7f5b9fa597c 引言   前篇介绍了 DICOM C-Find 消息服务,本文结合开源 DICOM 库 fo-dicom 详细介绍一 ...

  5. 【转】02.Dicom 学习笔记-DICOM C-Find 消息服务

    引言   前篇介绍了 DICOM C-Store 消息服务,本文结合开源 DICOM 库 fo-dicom 详细介绍一下 C-Find 服务. C-Find 消息服务   C-Find 服务是一个查询 ...

  6. 【转】01.Dicom 学习笔记-DICOM C-Store 消息服务

    转自:https://www.jianshu.com/p/bab6a85d3486 引言   之前总体介绍了 DICOM 的消息服务,可以参考这篇博文,但是有关每个服务的详细信息没有讲解,本文就结合开 ...

  7. 【转】医疗业务学习笔记--DICOM协议的基础内容!!!!!!!!!!

    转自:医疗业务学习笔记--DICOM协议的基础内容 - 知乎 本文首发于"雨夜随笔"公众号,欢迎关注. DICOM协议是医疗领域对如何处理.存储.打印和传输医疗图片的一系列标准.D ...

  8. Windows消息机制学习笔记(三)—— 消息的接收与分发

    Windows消息机制学习笔记(三)-- 消息的接收与分发 要点回顾 消息循环 消息队列 消息的接收 GetMessage 实验1:理解GetMessage 第一步:编译并运行程序A 第二步:编译并运 ...

  9. Windows消息机制学习笔记(一)—— 消息队列

    Windows消息机制学习笔记(一)-- 消息队列 基本概念 实验一:使用代码画出最简单窗口 第一步:编译并运行以下代码 第二步:查看运行结果 第三步:使用其它窗口对其进行覆盖,观察效果 总结 消息队 ...

最新文章

  1. 2018 react 大会_React Conf 2018的经验教训
  2. MySQL索引知识总结
  3. 荣耀X8碎屏2020-05-14
  4. Linux常用命令全网最全
  5. hiho一下 第六十六周
  6. windows环境下VS2013编译openSSL
  7. Leetcode 278.第一个错误的版本
  8. Atitit uuid 的概念与实现与最佳实践总结 目录 1. 概念与组成 1 1.1. 在空间(Space)与时间(Time)上的唯一性 1 1.2. UUID 1 1.3. 组成 2 1.3.1
  9. 计算机等级考试一级wps office 教程,全国计算机等级考试一级WPSOffice教程
  10. java 加载类失败_java-动态类加载在运行时失败
  11. 简单逆向10(z3-solver)
  12. android.hardware.Camera 5.1之后操作照相机是不是不能用啦,我用小米手机(基本android 6.0)
  13. Win11全新功能来袭!每天都有新亮点!
  14. 最长公共子序列 【DP】+【最长公共子序列】
  15. PHP jQuery微信大转盘抽奖源代码分享
  16. 模电学习笔记(十一)——微分电路
  17. 毕业设计-基于BP神经网络预测系统的设计- MATLAB
  18. #yyds干货盘点# Kubernetes 怎样控制业务的资源水位?(16)
  19. PostgreSql数据库增删改查以及其他基本命令
  20. 百度总裁张亚勤宣布10月退休,李彦宏的人才建设要加紧了...

热门文章

  1. 【常见笔试面试算法题12续集二】动态规划算法案例2矩阵最小路径和练习题
  2. JAVA多线程及线程状态转换
  3. 【转载】linux进程及进程控制
  4. linux shell if
  5. HTTP协议中返回代码302的情况
  6. android程序获取WIFI的IP地址和MAC地址
  7. centos永久关闭防火墙
  8. 什么是word2vector
  9. [Leetcode][第104题][JAVA][二叉树的最大深度][递归][BFS]
  10. 力扣 两数相加 指针操作注意事项