【问题标题】:Getting started on FIX protocol with PHP sockets使用 PHP 套接字开始使用 FIX 协议
【发布时间】:2011-08-09 20:46:30
【问题描述】:

我完全了解 PHP 套接字和 FIX 协议。我有一个帐户,可让我连接到服务器并检索货币价格。

我修改了这段代码来连接并找出我从远程服务器收到的内容:

$host = "the-server.com";
    $port = "2xxxx";

    $fixv = "8=FIX.4.2";
    $clid = "client-name";
    $tid = "target-name";

    $fp = fsockopen($host, $port, $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    } else {
        $out = "$fixv|9=70|35=A|49=$clid|56=$tid|34=1|52=20000426-12:05:06|98=0|108=30|10=185|";
        echo "\n".$out."\n";
        fwrite($fp, $out);
        while (!feof($fp)) {
            echo ".";
            echo fgets($fp, 1024);
        }
        fclose($fp);
    }

我什么也得不到。主机很好,因为当我使用随机主机时出现错误。 我发送的消息是否没有回复?

我可能不太擅长在 Google 中查找内容,但我找不到任何关于如何使用 php 执行此操作的简单教程(至少没有将 fix 和 php 放在一起的内容)。

非常感谢任何帮助。

【问题讨论】:

  • 有关此javarevisited.blogspot.com/2011/02/… 的更多信息我相信我正确地遵循了登录说明,所以我猜我的代码没有正确读取回复或存在其他问题...
  • 嗨,NickO,你最后让这个工作了吗?
  • 我认为当时项目需求发生了变化,我们找到了不同的方法。
  • PHP 真的可以和 FIX 服务器通信吗?

标签: php sockets protocols fix-protocol


【解决方案1】:

FIX 分隔符实际上是'\001' 而不是'|',所以你必须在发送时替换它。

给你一些链接:

编辑0:

来自您提到的同一篇wikipedia 文章:

消息字段使用 ASCII 01 字符分隔。
...
FIX 消息示例:执行报告(管道字符用于表示 SOH 字符)...

编辑 1:

多加点:

  • 标签 9 包含不带标签 8(类型)、9(长度)和 10(校验和)的消息长度。
  • 标签 10,校验和,必须是所有消息字符的 ASCII 值的模 256 和,包括所有 SOH 分隔符,但不包括标签 10 本身(我知道,在 TCP 之上有校验和是愚蠢的,但是...)

【讨论】:

  • 我构建的消息通过validfix.com/fix-analyzer.html 8=FIX.4.2|9=53|35=A|49=a|56=b|34=1|52=20000426-12 检查: 05:06|98=0|108=30|10=237|
  • 这里也是一个使用 | 的 FIX 消息示例。分隔符en.wikipedia.org/wiki/FIX_protocol
  • 我说的是有线格式。您可能还想在写入后包含fflush()
  • 在你提到它之后才注意到。我正在重新格式化消息,但我的问题仍然是 - 即使该消息的格式错误,我是否应该得到一些东西,什么东西回来?
  • 这完全取决于服务器实现。我看到的地方只是在格式错误的消息上断开了您的连接。另外,不要忘记刷新输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多