Php 无法使用套接字\u recv增加套接字缓冲区大小
我已经成功地创建了一个web套接字连接,并且能够正确地发送和接收数据。但是,我无法增加套接字接收缓冲区的大小 通过使用下面的代码,我可以将接收字节限制在1000到更少Php 无法使用套接字\u recv增加套接字缓冲区大小,php,websocket,Php,Websocket,我已经成功地创建了一个web套接字连接,并且能够正确地发送和接收数据。但是,我无法增加套接字接收缓冲区的大小 通过使用下面的代码,我可以将接收字节限制在1000到更少 $bytes = socket_recv($socket,$buffer,2048,0); 但是,当我试图将其长度增加到65536字节时,它没有增加。 我正在使用下面提到的凭据创建web套接字连接 set_time_limit ( 0 ) ; ob_implicit_flush ( ) ; $master=socket_crea
$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");
使用
flags
参数中的MSG_WAITALL
选项告诉它在收到len
字节之前不要返回。为什么要将缓冲区增加到64KByte?我相信在大多数情况下,这没有多大意义。套接字缓冲区的最大大小当然也取决于底层实现。也许有一个内部的最大尺寸,你不能超过。
如果要接收更大的数据/消息,应多次使用socket\u recv
函数调用
顺便说一句,如果您使用的是PHP,您应该寻找一些功能强大的框架。我认为尝试使用原始套接字不是一个好主意。先生,我尝试过,但使用它后,我的程序卡住了,握手过程没有完成。如果客户端不打算一次发送所有64KB数据,您就不能用它进行握手。你想解决什么问题?事实上,我想了解更多关于HTML5 websocket的信息,目前我没有在我的应用程序中使用它,但将来我会尝试这个。。。。rite现在我正在尝试创建一个小型web应用程序/页面,在这里我可以使用WS-protocol发送所有HTML内容,因此通过在其中进行试验,我可以将大型HTML内容发送到web浏览器,但无法在服务器端接收,我想如果工作正常,我的应用程序将非常快速和实时。先生,我试图在循环中检索数据,但当我这样做时,我的数据就会损坏。它返回一些字节,其余的都为空。记住
socket\u recv
返回读取的字节数。在此之后,您不能尝试访问缓冲区的某些部分,因为它们无效。