使用PHP套接字开始使用FIX协议

时间:2011-08-09 20:46:31

标签: php sockets protocols fix-protocol

我完全掌握了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);
    }

我一无所获。主机很好,因为当我使用随机主机时出现错误。 我发送的邮件是否没有生成回复?

我可能不太擅长在谷歌找东西,但我找不到任何关于如何用PHP做这个的简单教程(至少没有什么把修复和PHP放在一起)。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

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

一些链接:

编辑0:

你从同一篇wikipedia文章中提到:

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

编辑1:

更多要点:

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