Eli mulla olis tällänen koodi
<?php $address = "0.0.0.0"; $port = 1337; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_bind($socket, $address, $port); socket_listen($socket); while (1) { if ($conn = @socket_accept($socket)) { socket_send($conn, "MOI\n",4,0); socket_close($conn); socket_close($socket); exit(0); } } socket_close($conn); socket_close($socket); ?>
Kun ajan tämän koodin näin
teemu@serveri4:~$ php ./socktest.php
Okei ei tule virheilmoituksia
Sitten yhdistän netcatillä tähän
teemu@serveri4:~$ nc 127.0.0.1 1337
MOI
teemu@serveri4:~$
Okei kaikki toimii tähän asti hyvin, mutta kun käynnistän tuon php socket -softan uudestaan niin tapahtuu näin
teemu@serveri4:~$ php ./socktest.php
Warning: socket_bind(): unable to bind address [98]: Address already in use in /home/teemu/socktest.php on line 5
teemu@serveri4:~$
Kysymys kuuluu: Miksi socket_close ei toimi?
Koita muuttaa tuo
socket_send($conn, "MOI\n",4,0); socket_close($conn); socket_close($socket); exit(0);
seuraavaksi
socket_send($conn, "MOI\n",4,0); socket_shutdown($socket,2) socket_close($socket); socket_close($conn); exit(0);
Eli siis olen koittanut myös tuota shutdown:ta jo ja silti sama virheilmoitus tulee...
Eikös kellään ole mitään ehdotuksia?
Aihe on jo aika vanha, joten et voi enää vastata siihen.