Witam.
Już na początku mówię że nie jestem zaawansowany w PHP, ale muszę napisać w nim prosty serwer, z którym będzie się łączyła aplikacja w C++. Używam XAMPPa, ale w przyszłości będzie to serwer zewnętrzny. Napisałem więc taki kod:
<?php
echo "Starting server on 62920\n";
$s = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
if (!socket_bind($s, '127.0.0.1', 62920)) die('bind error');
if (!socket_listen($s)) die('listen error');
socket_set_nonblock($s);
$clients = [];
while(true)
{
if(($newClient = socket_accept($s)) !== false)
{
$clients[] = $newClient;
socket_getpeername($newClient, $addr, $port);
echo "Client $newClient has connected. Address: $addr, port: $port\n";
}
foreach ($clients as $nr => &$c)
{
$getstr = @socket_read($c, 1024);
echo "Received: $getstr\n";
if(socket_last_error($c)==1054)
{
echo "ERROR";
socket_clear_error($c);
socket_shutdown($c, 2);
unset($clients[$nr]);
}
}
}
?>
Lecz po uruchomieniu otrzymuję komunikat:
Warning: socket_bind(): unable to bind address [10048]: Tylko jedno użycie każdego adresu gniazda (protokół/adres sieciowy/port) jest normalnie dozwolone.
Zmieniałem port wiele razy, nie rozumiem więc w czym ma problem PHP.
katakrowakatakrowa