İşte benim kod:
<?php
$host = "127.0.0.1";
$portListen = 1234;
$portSend = 1240;
// create socket
$sSender = socket_create(AF_INET, SOCK_STREAM, 0);
socket_connect($sSender, $host, $portListen);
socket_write($sSender, "test", strlen ("test"));
$sListen = socket_create(AF_INET, SOCK_STREAM, 0);
socket_set_option($sListen, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($sListen, $host, $portSend);
socket_listen($sListen,1);
$dataSock = socket_accept($sListen);
echo socket_read($dataSock, 3, PHP_NORMAL_READ);
// close sockets
socket_close($sSender);
socket_close($sListen);
?>
Başka bir uygulamaya "test" göndermek, aldığı ve "teyit" geri göndermek. Sorun sadece bir kez yapabilirsiniz olduğunu. Ben yenilerseniz, ben adresi zaten kullanılan hatadır olsun. I php.net ama boşuna önerdi çözümleri çalıştı. ) (Socket_close önce () socket_shutdown çalışıyorum sadece bana bağlı değil uyarı verir ve ferahlatıcı üzerine bana bitmeyen yükleme verecektir.
Tampon veri hala var çünkü anladığım kadarıyla hemen kapanmadı nedeni yuvadır. Ama gördüğünüz gibi ben açıkça sadece 1 bağlantısı dinlemek için devlet. Ayrıca ben sadece benim uygulamadan 3 karakter gönderme ve bu komut 3 okuyorum.
Ben yanlış ne yapıyorum?
edit: Ben dinleyemiyorum çünkü ben 2 yuvalarını kullanarak yaşıyorum nedeni Soket zaten hata bağlı olduğu bana ver (ki) yazılmasından sonra () 'dir. Dinle atlama () ve () write () sonra bana geçersiz argüman hatası vermek okuma için düz gidiyor.