PHP使用C语言开发扩展中:zend_parse_parameters方法接收二进制数据时取不到数据 财富值23

2016-10-19 17:28发布

PHP扩展开发中,有一个方法需要接收二进制数据,zend_parse_parameters设置参数类型为 "s",打印参数的时候为空,看样子是没有接收到。

PHP_FUNCTION(hau_socket) {     char *buf;     int len;       if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s", &buf, &len) == FAILURE ) {         return;     }      php_printf("str:%s, buf length:%d, len:
", buf, strlen(buf), len);  }
<?php  $packet = new SocketPacket();//使用pack函数打包进制数据 $packet->WriteBegin( 0x7070 ); $packet->WriteInt_N( 0x1001 ); $packet->WriteInt_N( 1 ); $packet->WriteInt_N(9055249); $packet->WriteEnd_n(); hau_socket( $packet->GetPacketBuffer() );
输出结果:str:, buf length:0, len: 

是否参数类型设置不对!?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答

php_printf那一行是不是少了个%d,最后的len没有打印出来。
然后,接收二进制数据你不应该也不能用strlen

一周热门 更多>