3

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

谢谢

4

4 回答 4

5

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

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

于 2011-02-14T07:10:03.460 回答
1

您应该首先了解您正在努力的规范;我希望你有比单纯的 ISO8583 消息规范更具体的东西,一些关于所需字段和内容的具体内容。重要的是您基于指定存在哪些字段的位图构建和解除对消息的 ISO8583 字段的阻止。

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

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

于 2010-12-07T09:08:01.827 回答
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

于 2013-02-26T19:10:17.110 回答
0

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

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

免责声明:我从来没有实现过 ISO 8583,我看的参考并不清楚代码是否实际上是简单的 ASCII 字符(尽管我打赌它们是)。希望更熟悉该标准的人能够澄清或确认该假设。

于 2010-12-07T04:28:32.383 回答