国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

stream_socket_client fgets疑問(wèn)

Frboy

server代碼:

$this->socket = stream_socket_server("tcp://0.0.0.0:13008", $errno, $errmsg, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN);
$this->event->add($this->socket, EventInterface::EV_READ, array($this, 'acceptConnection'));

在acceptConnection函數(shù)里直接fwrite一條消息(“hello”)回客戶端
client代碼:

$socket = stream_socket_client('tcp://127.0.0.1:13008', $errno, $errmsg, 5);
if($socket)
{
    fwrite($socket, "\n");
    while(!feof($socket))
    {
        var_dump(fgets($socket, 1024));
    }
    fclose($socket);
}

問(wèn)題:

在client代碼中,stream_socket_client請(qǐng)求之后,并不會(huì)觸發(fā)socket讀事件,所以要先f(wàn)write一條消息,才能獲取serve返回的數(shù)據(jù)(“hello”),是這樣的么?
如果在client不進(jìn)行fwrite,當(dāng)server結(jié)束之后,客戶端為什么能立即收到server返回的‘hello’消息

5325 1 0
1個(gè)回答

walkor 打賞

http://php.net/manual/zh/function.fgets.php
你要看下php手冊(cè),要了解fgets用法,要什么時(shí)候fgets($socket, 1024)才返回。
1、讀取了指定的字節(jié)數(shù)的數(shù)據(jù)
2、讀到了換行符號(hào)
3、讀到了EOF,也就是鏈接斷開(kāi)了

建議你用fread替換fgets。
http://php.net/manual/zh/function.fread.php
同樣也要看看手冊(cè)fread用法

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??