简体   繁体   English

TCP服务器不接受第二个套接字发送

[英]TCP server not accepting second socket send

I am trying to communicate with my TCP server by php script but i am only able to send command once and if i send again then in script it show that data is sent but in server i don't reciew any command. 我正在尝试通过php脚本与TCP服务器通信,但是我只能发送一次命令,如果再次发送,则在脚本中它表明已发送数据,但在服务器中我没有收到任何命令。 Basically after sending command i want to send exit command and close socket. 基本上在发送命令后,我想发送退出命令并关闭套接字。

<?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);
?>

I have tried communicating with telnet and it works fine. 我尝试过与telnet通讯,效果很好。 Any help would be great. 任何帮助都会很棒。

我通过在两个连续的消息之间放置1ms的睡眠来解决此问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM