slite
Новичок
День добрый. Как то попытаюсь верно сформулировать вопрос.
На php серверый сокет.
Код в принципе взял с инета. Возникает проблема когда на этот порт приходят данные, которые заходят не целиком как 1 пакет, а в некоторых случаях пакет режиться, и приходят поэтапно. В случае когда пакет приходит поэтапно, пхп начинает работать только с 1 этапом прихода пакета, и соответственно запрос приходит не полный. Возможно ли сделать на пхп, так что бы он умел понимать что пакет приходит кусками и ждать весь пакет?
На php серверый сокет.
PHP:
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('html_errors', false);
set_time_limit(0);
$NULL = NULL;
$address = '192.168.1.215';
$port = 5050;
$client_socket = array();
$max = 10;
$master = socket_create(AF_INET, SOCK_SEQPACKET, SOL_TCP);
$res = true;
$res &= @socket_bind($master, $address, $port);
$res &= socket_listen($master);
if(!$res)
{
die("Not connect, exist port or not listen \n");
}
else
{
$read = array($master);
$abort = false;
$i = 0;
while(!$abort)
{
$num_changed = socket_select($read, $NULL, $NULL, 0, 10);
if($num_changed)
{
if(in_array($master, $read))
{
if(count($client_socket) < $max)
{
$client_socket[] = socket_accept($master);
}
}
foreach($client_socket as $key => $client)
{
if(in_array($client, $read))
{
$input = socket_read($client, 4096, PHP_BINARY_READ );
echo "\n ============= Razmer Paketa ==============\n";
echo strlen($input);
echo "\n ============= Razmer Vse ==============\n";
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
echo $errorcode. $errormsg;
print_r($input);
socket_close($client);
unset($client_socket[$key]);
}
}
}
$read = $client_socket;
$read[] = $master;
}
}
Код в принципе взял с инета. Возникает проблема когда на этот порт приходят данные, которые заходят не целиком как 1 пакет, а в некоторых случаях пакет режиться, и приходят поэтапно. В случае когда пакет приходит поэтапно, пхп начинает работать только с 1 этапом прихода пакета, и соответственно запрос приходит не полный. Возможно ли сделать на пхп, так что бы он умел понимать что пакет приходит кусками и ждать весь пакет?