Я пытаюсь связаться с моим TCP-сервером с помощью php-скрипта, но я могу отправить команду только один раз, и если я отправляю снова, то в скрипте это показывает, что данные отправляются, но на сервере я не получаю никакой команды. После отправки команды я хочу отправить команду выхода и закрыть сокет.
<?php
echo "<br>Message send successfully \n";
if (isset($_POST['action'])) {
switch ($_POST['action']) {
case 'open':
$message = "CO1OX\n";
break;
case 'close':
$message = "CO1CX\n";
break;
}
} else {
$error = "Post error";
}if (!($sock = socket_create(AF_INET, SOCK_STREAM, 0))) {
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Couldn't create socket: [$errorcode] $errormsg \n");
}
echo "Socket created <br/>";
//Connect socket to remote server
if (!socket_connect($sock, '127.0.0.1', 13000)) {
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not connect: [$errorcode] $errormsg \n");
}
echo "Connection established <br/>";
if (!($sent_data = socket_send($sock, $message, strlen($message), 0)))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not send data: [$errorcode] $errormsg \n");
}
$message="exit\n";
if(!($sent_data = socket_send($sock, $message, strlen($message), 0)))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not send data: [$errorcode] $errormsg \n");
}
socket_shutdown($sock, 2);
socket_close($sock);
?>
Я попытался связаться с Telnet, и он работает нормально. Любая помощь будет отличной.
Я решил это, поместив сон 1 мс между двумя последовательными сообщениями.
Других решений пока нет …