I am making a little project for myself, a website with remote control of my wifi bulb; I have to send datagram to $address:$service_port
and then listen to this socket for the request. It should be something like a list of devices and their options. But I am stuck with this:
OK. Trying connect to address '239.255.255.250', port '1982'... OK. Sending request(M-SEARCH * HTTP/1.1 HOST: 239.255.255.250:1982 MAN: "ssdp:discover" ST: wifi_bulb) OK. Receiving request... Warning: socket_recv() [function.socket-recv]: unable to read from socket [0]: Operation completed successfully. in Z:\home\x1.loc\www\header.php on line 125 Cant execute socket_recv(). Reason: Operation completed successfully. Result:
And if I didnt define 'MSG_DONTWAIT' at beginning, it also crashes. 'MSG_WAITALL' dont work at all, page never stops reloading. This is my 1st php project, so maybe errors connected with settings.
<?php
if(!defined('MSG_DONTWAIT')) define('MSG_DONTWAIT', 0x40);
error_reporting(E_ALL);
$address = "239.255.255.250";
$service_port = 1982;
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if ($socket === false) {
echo "Cant execute function socket_create().\nReason: " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "OK.\n";
}
echo "Trying connect to address '$address', port '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
echo "Cant execute function socket_connect().\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
echo "OK.\n";
}
$in = "M-SEARCH * HTTP/1.1\r\n" .
"HOST: $address:$service_port\r\n" .
"MAN: \"ssdp:discover\"\r\n" .
"ST: wifi_bulb";
$out = '';
echo "Sending request(" . $in . ") ";
socket_write($socket, $in, strlen($in));
echo "OK.\n";
echo "Receiving request...\n\n";
$buf = 'This is my buffer.';
//$bytesocket=@socket_recv($socket, $buf, 4048, MSG_DONTWAIT);
if ($bytes = socket_recv($socket, $buf, 2048, MSG_DONTWAIT)) {
echo "Read $bytes bytes from function socket_recv(). Closing socket...";
}
else{
echo "Cant execute socket_recv(). Reason: " . socket_strerror(socket_last_error($socket)) . "\n";
}
echo "Result: " . $buf . "\n";
socket_close($socket);
?>
source https://stackoverflow.com/questions/70453425/php-socket-recv-unable-to-read-from-socket
Comments
Post a Comment