1

我已经成功创建了一个 web-socket 连接并且能够正确发送和接收数据。但是,我无法增加套接字接收缓冲区的大小。

通过使用下面的代码,我可以将接收字节限制为 1000 到更少。

$bytes = socket_recv($socket,$buffer,2048,0);

但是,当我尝试将其长度增加到 65536 字节时,它并没有增加。我正在使用下面提到的凭据来创建 Web 套接字连接。

set_time_limit ( 0 ) ;
ob_implicit_flush ( ) ;
$master=socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("socket_create() failed");
socket_set_option($master, SOL_SOCKET, SO_REUSEADDR, 1) or die("socket_option() failed");
socket_bind($master, $address, $port) or die("socket_bind() failed");
socket_listen($master,20) or die("socket_listen() failed");
4

2 回答 2

1

使用参数中的MSG_WAITALL选项告诉它在收到字节flags之前不要返回。len

于 2012-09-06T08:41:51.883 回答
1

为什么要将缓冲区增加到 64KByte?我敢肯定,在大多数情况下,这没有多大意义。套接字缓冲区的最大大小当然也取决于底层实现。也许有一个您不能超过的内部最大尺寸。如果您想接收更大的数据/消息,您应该socket_recv多次使用该函数调用。

顺便说一句,如果你使用 PHP,你应该看看一些强大的框架。我认为尝试使用 RAW 套接字不是一个好主意。

于 2012-09-06T08:42:42.020 回答