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:
是否參數類型設定不對!?
回複內容:
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時也沒有報null 指標,說明buf確實被賦值了。我覺得你應該檢查一下$packet->GetPacketBuffer()是否返回了一個字串。