Đây là function thực thi của mình:
Code:
void Player::handleRequest(unsigned char* buf, int len){
try{
short header;
header = buf[2] + buf[3]*0x100;
printf("HANDLER [%x] Player: %s (%d,%d)\n",header,this->getName(),this->getRegionId(),this->getMapId());
handler->handle(PacketReader(buf, len, id));
}
#ifdef DEBUG
catch(PacketHandlingError ph){
cout << ph.getError();
}
catch (BadQuery er ) {
printf("%s\n", er.what());
}
#endif
catch(...){
//TODO
}
}
Còn đây là đoạn code gọi function trên:
Code:
bytesInBuffer += l;
if (bytesInBuffer == packetSize){
[B][COLOR="#FF0000"]player->handleRequest(buffer, packetSize);[/COLOR][/B]
bytesInBuffer = 0;
}
khai báo biến buffer:
Code:
private:
unsigned char buffer[BUFFER_LEN];
Ở đoạn gọi function handleRequest, biến buffer khi chạy là 1 mảng có 29 giá trị nhưng khi mình debug vào function handleRequest thì biến buf chỉ nhận giá trị đầu tiên trong mảng buffer khi truyền vào
Các bác chỉ dùm mình xem mình sai ở đoạn nào với