您的位置:首页 > 理论基础 > 计算机网络

dicom网络通讯入门(3)

2015-07-30 11:10 856 查看
转自:/article/6019823.html

接下来可以进行消息传递了 ,也就是dimse ,再来复习下 什么是dimse 。n-set n-create c-echo 这些都是dimse 他们都是属于一种结构的pdu 那就是tf-pdu(传输数据和命令的都称之为tf-pdu 或者transfer pdu ,协商连接的都称之为associcate pdu) 。dimse 由 许多tag组成,就像文件解析那篇博文一样。
tf-pdu数据结构分析如下:

//组织Verification_CECHORSP响应原语
//rq端无data ,rsp端无data
public void Verification_CECHORQ()
{
PDVset rq = new PDVset();
rq.pduType = 0x04;
rq.contextID = pstContextId;
rq.msgControlHeader = 0x03;
rq.elements = new SortedDictionary<uint, DataElement>();

int len = 0;

DataElement element = new DataElement();
element.bytOrder = bytOrder;

element.tag = 0x00000002;
element.setValue(UIDs.Verification);
rq.elements.Add(0x00000002, element);
len += (element.getSerialLen());

element.tag = 0x00000100;
element.setValue(0x0030.ToString());
rq.elements.Add(0x00000100, element);
len += (element.getSerialLen());

element.tag = 0x00000110;
element.setValue(0x03.ToString());
rq.elements.Add(0x00000110, element);
len += (element.getSerialLen());

element.tag = 0x00000800;//有无对应的数据段
element.setValue(0x0101.ToString());
rq.elements.Add(0x00000800, element);
len += (element.getSerialLen());

element.tag = 0x00000000;//消息原语数据长度
element.setValue(len.ToString());
rq.elements.Add(0x00000000, element);
//len += (element.getSerialLen());

rq.itemLen = (uint)(12 + 2 + len);

rq.pduLen = rq.itemLen + 4;

//进行c-echo-rsp响应
stream.writeBytes(rq.serial());
}


View Code
看看代码里面特定的地方 是不是跟我上面描述的一样?就这样so easy 。看到没 其实我这些都是在dicom文档里翻的 就这样而已没什么神奇的 相信你也能。再来复习下dicom标准跟网络通讯相关的几个章节 :

DICOM Part 4: Service Class Specifications ,服务类规范

DICOM Part 7: Message Exchange 消息交换

DICOM Part 8: Network Communication Support for Message Exchange 网络通讯对消息交换的支持

按照他们的套路来 就水到渠成 。

这是我的测试结果 不用怀疑哥的水平 哥是拿到医院去测试过的:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: