Как проверить, установлено ли соединение sh или нет на FIX API? - PullRequest
0 голосов
/ 19 марта 2020

Я просто хочу установить sh соединение с API-интерфейсом FIX, используя хост и порт (который я дал, установив соединение), и если я подключился успешно, тогда я отправляю запрос на вход в систему для входа в систему на FIX API, а затем я получил ответ сервера, но проблема в том, что я получаю пустое (0) respose

МОЙ КОД IS

<?php
/*
Template Name: connection
*/
?>



<?php
error_reporting(E_ALL);


date_default_timezone_set('Asia/Kolkata');
echo date("YmdH:i:s.ms");


$date =date("Ymd-H:i:s.ms");


/* Get the port . */
$service_port = "(some port no.)";

/* Get the IP address for the target host. */
$address = gethostbyname('.....some host name....');

/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
if ($socket === false) {
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
} else {
    echo "OK.............<br>";
}

echo "................Attempting to connect to '$address' on port '$service_port'......<br>";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
    echo "OK............,<br>";
}

$in = "8=FIX.4.3\0019=149\00135=A\00134=1\00149="SenderCompID"\00152=".$date."\00156="TargetCompID"\00198=0\001108=60\001141=Y\001553="Username"\001554="Password"\00110=161\001";

$out = '';

echo "Sending request...";
socket_write($socket, $in, strlen($in));
echo "OK...........<br>";

echo "<br> ------------------Reading response:-------------------<br>";
$buf = 'This is my buffer.';
if (false !== ($bytes = socket_recv($socket, $buf, 2048, MSG_WAITALL))) {
    echo "Read $bytes bytes from socket_recv(). Closing socket...<br>";
} else {
    echo "socket_recv() failed; reason: " . socket_strerror(socket_last_error($socket)) . "\n";
}
socket_close($socket);

echo $buf . "Message End <br>";
echo "OK.\n\n";
?>

Вывод, который я получаю на своей странице сервера XAMPP в Wordpress:

2020031910:11:35.0335OK.............
................Attempting to connect to '(some Host IP Adress)' on port '(port no)'......
OK............,
Sending  request...OK...........

------------------Reading response:-------------------
Read 0 bytes from socket_recv(). Closing socket...
Message End
OK.

Я хотел бы спросить кое-что: 1) Это происходит из-за моего кода или конфигурации? 2) Или это из-за проблемы на сервере FIX? 3) Есть ли другой способ подключения к серверу FIX?

1 Ответ

0 голосов
/ 19 марта 2020

Возможно, вам нужно изменить строку

if (false !== ($bytes = socket_recv($socket, $buf, 2048, MSG_WAITALL))) {
  echo "Read $bytes bytes from socket_recv(). Closing socket...<br>";
} else {
  echo "socket_recv() failed; reason: " . socket_strerror(socket_last_error($socket)) . "\n";
}

Почему бы вам не попробовать http://www.quickfixengine.org/, это отраслевой стандарт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...