1

我使用 JPOS 发送和接收 ISO 8583 消息。这是客户:

public static void main(String[] args) throws IOException, ISOException {
    System.setProperty("java.net.preferIPv4Stack", "true");
    EvnMsg msg = new EvnMsg();
    ISO93APackager packager = new ISO93APackager(); 
    msg.setPackager(packager);
    msg.setMTI("1804");
    msg.setAuditNumber("124125");
    ASCIIChannel channel  = new ASCIIChannel("Server_IP", PORT, packager);
    channel.connect();
    channel.send(msg);
    channel.receive();
    //channel.disconnect();
}

这是服务器:

public static void main(String[] args) throws IOException, ISOException {
    ISO93APackager packager = new ISO93APackager();
    ServerChannel channel = new ASCIIChannel (packager);
    channel.accept(new ServerSocket(PORT));
    ISOMsg isoMsg = channel.receive();

    System.out.println("Received");
}

服务器收到消息,但问题是位图的值为 -1

在此处输入图像描述

那我做错了吗?接收消息的正确方法是什么?

4

1 回答 1

1

这是 jPOS 使用的内部表示,请随意忽略该事实;pack()一旦通道调用 ISOMsg 的方法,位图就会正确生成。

几点评论:

  • EnvMsg不是 jPOS 的一部分,我假设您正在扩展ISOMsg
  • 您不必打电话msg.setPackager,频道会代您处理
  • 您正在通过不使用QServer该类来重新发明服务器中的轮子
  • ChannelAdaptor通过不使用该类,您正在重新发明客户端代码中的轮子
  • 你可能需要一个多路复用器,考虑使用QMUX
  • 我建议你看看 Q2 应用程序来运行所有这些。
于 2014-03-13T23:53:13.083 回答