我不明白如何通过 c# socket.send(byte[]) 发送数据,我的意思是他们说我需要发送 0800(网络管理请求)进行回声测试,如何转换。请我已经编程了一段时间,但我不明白说明。
谢谢
首先,您需要了解ISO8583 消息格式。对于回波测试消息,在 87 版本中,您的 MTID 应为 0800,并且字段 70(网络管理信息代码)应设置为 301,表示回波测试。
构建 ISO 消息非常棘手。(无耻插件出现)我发布了OpenIso8583.Net,一个用于 .Net 的消息解析器/构建器,它可以扩展到您正在使用的特定 ISO 风格
您应该首先了解您正在努力的规范;我希望你有比单纯的 ISO8583 消息规范更具体的东西,一些关于所需字段和内容的具体内容。重要的是您基于指定存在哪些字段的位图构建和解除对消息的 ISO8583 字段的阻止。
过去,当我在 C# 中构建 ISO8583 测试客户端时,我首先将一组可以构建和解除阻塞消息位图的类放在一起。一旦你有了它,你需要一些代码来构建和解除阻止你的消息。这些将设置(或测试)位图中的位,然后将预期的字段提取或插入到字节缓冲区中。
一旦你有了这个工作,字节缓冲区消息的实际发送和接收就变得微不足道了。
//***************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
查看规范,不可能在这里提供完整的答案 - 但要让您开始,您基本上需要创建各种消息并将它们发送到管道中。由于 Socket 类需要字节数组而不是字符串,因此您可以使用其中一个 Encoding 类来获取字符串的原始字节。如果我从Wikipedia正确阅读信息:
byte[] echo = System.Text.Encoding.ASCII.GetBytes("0100");
socket.Send(echo);
免责声明:我从来没有实现过 ISO 8583,我看的参考并不清楚代码是否实际上是简单的 ASCII 字符(尽管我打赌它们是)。希望更熟悉该标准的人能够澄清或确认该假设。