Beh...devi prima connetterti al socket, poi scriverci il pacchetto e poi chiudere la connessione.
Un client dovrebbe fare queste cose:
Codice PHP:
$socket socket_create(AF_INETSOCK_STREAMSOL_TCP);
if (
$socket === false) {
    echo 
"socket_create() failed: reason: " socket_strerror(socket_last_error()) . "\n";
} else {
    echo 
"OK.\n";
}

echo 
"Attempting to connect to '$address' on port '$service_port'...";
$result socket_connect($socket$address$service_port);
if (
$result === false) {
    echo 
"socket_connect() failed.\nReason: ($result) " socket_strerror(socket_last_error($socket)) . "\n";
} else {
    echo 
"OK.\n";
}

$in "HEAD / HTTP/1.1\r\n";
$in .= "Host: [url]www.example.com\r\n[/url]";
$in .= "Connection: Close\r\n\r\n";
$out '';

echo 
"Sending HTTP HEAD request...";
socket_write($socket$instrlen($in));
echo 
"OK.\n";

echo 
"Reading response:\n\n";
while (
$out socket_read($socket2048)) {
    echo 
$out;
}

echo 
"Closing socket...";
socket_close($socket);
echo 
"OK.\n\n"
più o meno...
Se invece vuoi usare proprio socket_sendto, dovresti comunque fare il bind
Codice PHP:
 $sh socket_create(AF_INETSOCK_STREAMSOL_TCP);
    if (
socket_bind($sh'127.0.0.1'4242)) {
        echo 
"Socket bound correctly";
    }
    
$buf 'Test Message';
    
$len strlen($buf);
    if (
socket_sendto($sh$buf$len0x100'192.168.0.2'4242) !== false) {
        echo 
"Message sent correctly";
    }
    
socket_close($sh);