我们的服务器有网站和一个C++ 服务器程序,一个网页提交按钮下面有下面一段代码,用来发给本机的的C++ 服务器程序。现在这段代码偶尔会出现问题(该代码应该没问题,只是系统耦合有些问题导致偶尔出现bug),能否创建一个socket,以后每次要发送数据给C++ 服务器程序时都调用该socket。现在是每次要发送数据时创建一个,发送,然后关闭。//端口111  
$service_port = 10024;  
//本地  
$address = '127.0.0.1';  
//创建 TCP/IP socket  
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);  
if ($socket < 0) {  
        echo "socket创建失败原因: " . socket_strerror($socket) . "\n";  
} else {  
        echo "OK,HE HE.\n";  
}  
$result = socket_connect($socket, $address, $service_port);  
if ($result < 0) {  
        echo "SOCKET连接失败原因: ($result) " . socket_strerror($result) . "\n";  
} else {  
        echo "OK.\n";  
}  
//发送命令  
//$data = $_COOKIE['company_name'];
$in=GetJsonPacket();//"test sock";   //获取数据
socket_write($socket, $in, strlen($in)); 
//this->success("推送成功");
socket_close($socket);  

解决方案 »

  1.   


    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);  
    if ($socket < 0) {  
            echo "socket创建失败原因: " . socket_strerror($socket) . "\n";  
    return;或者exit;//不然会继续执行
    } else {  
            echo "OK,HE HE.\n";  
    }  
    $result = socket_connect($socket, $address, $service_port);  
    if ($result < 0) {  
            echo "SOCKET连接失败原因: ($result) " . socket_strerror($result) . "\n";  
    return;或者exit;//不然会继续执行
    } else {  
            echo "OK.\n";  
    }  
      

  2.   

    这里也可以完善,能否创建一个socket,以后就不用每次都创建,发送,关闭了。这样给程序带来了bug。