【转】05.Dicom 学习笔记-DICOM C-Echo 消息服务
引言
??經過前面幾篇的介紹,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 消息服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 河流水质指标预测与不确定性分析:机器学习
- 下一篇: 沪深300etf期权什么时候上市?沪深3