如何编码iso 8583的数据来传输socket c#

时间:2010-12-07 02:36:01

标签: c# sockets iso8583

我不明白如何通过c#socket.send(byte [])发送数据, 我的意思是他们说我需要发送0800(网络管理请求)进行回声测试,如何转换。 我已经编程了一段时间,但我不理解说明。

由于

4 个答案:

答案 0 :(得分:5)

首先,您需要了解ISO8583 message format。对于回波测试消息,在87版本中,您的MTID应为0800,而网络管理信息代码字段70应设置为301,表示回波测试。

构建ISO消息非常棘手。 (无耻的插件出现)我已经发布了OpenIso8583.Net,一个.Net的消息解析器/构建器,可以扩展到您正在使用的ISO的特定风格

答案 1 :(得分:1)

您应该首先了解您正在努力的规范;我希望你有比ISO8583消息规范更具体的东西,特别是关于所需字段和内容的东西。重要的是根据指定存在哪些字段的位图,在消息之间构建和解锁ISO8583字段的方式。

当我在过去使用C#构建ISO8583测试客户端时,我首先将一组可以构建和解锁消息位图的类放在一起。一旦你有了,你需要一些代码来构建和解密你的消息。这些将在位图中设置(或测试)位,然后将预期字段提取或插入字节缓冲区。

一旦你有了这个工作,实际发送和接收字节缓冲区消息是微不足道的。

答案 2 :(得分:0)

查看规范,这里不可能提供完整的答案 - 但是为了让你开始,你基本上需要创建各种消息并将它们发送到管道。由于Socket类需要一个字节数组而不是字符串,因此您可以使用其中一个Encoding类来获取字符串的原始字节。如果我正在从Wikipedia正确阅读信息:

byte[] echo = System.Text.Encoding.ASCII.GetBytes("0100");
socket.Send(echo);

免责声明:我从来没有实施过ISO 8583,而我所看到的参考文献并不清楚代码是否实际上是简单的ASCII字符(虽然我认为它们是)。希望更熟悉该标准的人会澄清或确认这一假设。

答案 3 :(得分:0)

            //***************additional encoders***************
            UnicodeEncoding encoderUnicode = new UnicodeEncoding();
            UTF32Encoding encoder32 = new UTF32Encoding();
            UTF7Encoding encoder7 = new UTF7Encoding();
            UTF8Encoding encoder8 = new UTF8Encoding();
            //*************end of additionals*************

            ASCIIEncoding encoder = new ASCIIEncoding();

关于解析器,在iso 8583上做一些谷歌,最好是2003年