PHP Yuva - Çıktı Okuma değil

1 Cevap php

Ben bir soket okuma bazı sorunlar yaşıyorum. Temelde, ben bir hata olmadan makineye bağlanabilir. Ben bir hata olmadan makineye yazabilirsiniz. Ben çıktı okumak için görünmüyor olabilir.

İşte ben ne yapıyorum:

$header1 = chr(0xFF).chr(0xFB).chr(0x1F).chr(0xFF).chr(0xFB).chr(0x20).chr(0xFF).chr(0xFB).chr(0x18).chr(0xFF).chr(0xFB).chr(0x27).chr(0xFF).chr(0xFD).chr(0x01).chr(0xFF).chr(0xFB).chr(0x03).chr(0xFF).chr(0xFD).chr(0x03).chr(0xFF).chr(0xFC).chr(0x23).chr(0xFF).chr(0xFC).chr(0x24).chr(0xFF).chr(0xFA).chr(0x1F).chr(0x00).chr(0x50).chr(0x00).chr(0x18).chr(0xFF).chr(0xF0).chr(0xFF).chr(0xFA).chr(0x20).chr(0x00).chr(0x33).chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0x2C).chr(0x33).chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0xFF).chr(0xF0).chr(0xFF).chr(0xFA).chr(0x27).chr(0x00).chr(0xFF).chr(0xF0).chr(0xFF).chr(0xFA).chr(0x18).chr(0x00).chr(0x58).chr(0x54).chr(0x45).chr(0x52).chr(0x4D).chr(0xFF).chr(0xF0);
$header2 = chr(0xFF).chr(0xFC).chr(0x01).chr(0xFF).chr(0xFC).chr(0x22).chr(0xFF).chr(0xFE).chr(0x05).chr(0xFF).chr(0xFC).chr(0x21);

    $fp = pfsockopen('ServerName',$port,$errno,$errstr,35);
    if(!$fp) {
        echo '<p>Error connecting to system.</p>';
        echo $errstr . ' (' . $errno . ')';
    } else {
        fputs($fp, $header1);
        sleep(1);
        fputs($fp, $header2);
        sleep(1);
        fputs($fp, "99\r");
        sleep(3);

        $read = fread($fp, 128);
        $pos = socket_get_status($fp);
        echo '<pre>';
        var_dump($pos);
        echo '</pre>';
        //$read = fread($fp,$pos["unread_bytes"]);
        //$read = str_replace("\n","<br>",$read);
        //$explode = explode("\"",$read);
    }
    fclose($fp);

Ne benim için gerçekten garip socket_get_status () 0 okunmamış bayt var, henüz EOF yanlış olmasıdır. Bana oldukça çelişkili görünüyor.

array(7) {
  ["stream_type"]=>
  string(14) "tcp_socket/ssl"
  ["mode"]=>
  string(2) "r+"
  ["unread_bytes"]=>
  int(0)
  ["seekable"]=>
  bool(false)
  ["timed_out"]=>
  bool(false)
  ["blocked"]=>
  bool(true)
  ["eof"]=>
  bool(false)
}

Ben çıktı alamıyorum neden kimse herhangi bir fikirleri var mı?

Teşekkürler!

1 Cevap

Ben 'bloke' değeri içine baktı ve sorunu buldum.

Yukarıdaki gibi, == true bloke Esasen, daha sonra dönüş değeri kullanılabilir hale bekleyecek. Bloklanmamış bunu Ayar değeri hemen iade edilecektir anlamına gelir.

stream_set_blocking($fp, 0);