时间:2021-07-01 10:21:17 帮助过:26人阅读
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:\n", buf, strlen(buf), len);
}
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:
是否参数类型设置不对!?
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:\n", buf, strlen(buf), len);
}
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:
是否参数类型设置不对!?
从zend_parse_parameters
的使用上没有发现问题,并且你printf
时也没有报空指针,说明buf
确实被赋值了。我觉得你应该检查一下$packet->GetPacketBuffer()
是否返回了一个字符串。