2017-01-27 23 views
0

Я пытаюсь установить связь с моим TCP-сервером с помощью php-скрипта, но я могу только отправить команду один раз, и если я отправлю еще раз, то в скрипте он покажет, что данные отправляются, но на сервере я надеваю 't просмотреть любую команду. В основном после отправки команды я хочу отправить команду exit и закрыть сокет.TCP-сервер, не принимающий второй сокет, отправляет

<?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, и он отлично работает. Любая помощь будет большой.

ответ

0

Я решил это, поставив сон 1 мс между двумя последовательными сообщениями.