本文整理汇总了C++中bf_read::ReadBytes方法的典型用法代码示例。如果您正苦于以下问题:C++ bf_read::ReadBytes方法的具体用法?C++ bf_read::ReadBytes怎么用?C++ bf_read::ReadBytes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类bf_read
的用法示例。
在下文中一共展示了bf_read::ReadBytes方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleMessage
//.........这里部分代码省略.........
return true;
}
senddata.WriteUBitLong(6, 6);
senddata.WriteByte(state);
senddata.WriteLong(aservercount);
return true;
}
if (type == 7) // svc_Print
{
char print[2048];
msg.ReadString(print, sizeof(print));
// printf("svc_Print: %s", print);
printf("%s", print);
return true;
}
if (type == 8)//svc_ServerInfo
{
unsigned short protoversion = msg.ReadShort();
long servercount = msg.ReadLong();
bool srctv = (bool)(msg.ReadOneBit() == 1);
bool dedicated = (bool)(msg.ReadOneBit() == 1);
long crc = msg.ReadLong();
short maxclasses = msg.ReadWord();
char mapmd5[16];
msg.ReadBytes(mapmd5, 16);
char players = msg.ReadByte();
char maxplayers = msg.ReadByte();
float tickinterval = msg.ReadFloat();
char platform = msg.ReadChar();
char gamedir[255];
char levelname[255];
char skyname[255];
char hostname[255];
char loadingurl[255];
char gamemode[255];
msg.ReadString(gamedir, sizeof(gamedir));
msg.ReadString(levelname, sizeof(levelname));
msg.ReadString(skyname, sizeof(skyname));
msg.ReadString(hostname, sizeof(hostname));
msg.ReadString(loadingurl, sizeof(loadingurl));
msg.ReadString(gamemode, sizeof(gamemode));
printf("ServerInfo, players: %lu/%lu | map: %s | name: %s | gm: %s | count: %i | left: %i | step: %i\n", players, maxplayers, levelname, hostname, gamemode, servercount, msg.GetNumBitsLeft(), bconnectstep);
netchan->m_iServerCount = servercount;
bconnectstep = 4;
return true;
}
if (type == 10)//svc_ClassInfo
{
int classes = msg.ReadShort();
int useclientclasses = msg.ReadOneBit();
示例2: ParseUpdate
//-----------------------------------------------------------------------------
// Purpose: Parse string update
//-----------------------------------------------------------------------------
void CNetworkStringTable::ParseUpdate( bf_read &buf, int entries )
{
int lastEntry = -1;
CUtlVector< StringHistoryEntry > history;
for (int i=0; i<entries; i++)
{
int entryIndex = lastEntry + 1;
if ( !buf.ReadOneBit() )
{
entryIndex = buf.ReadUBitLong( GetEntryBits() );
}
lastEntry = entryIndex;
if ( entryIndex < 0 || entryIndex >= GetMaxStrings() )
{
Host_Error( "Server sent bogus string index %i for table %s\n", entryIndex, GetTableName() );
}
const char *pEntry = NULL;
char entry[ 1024 ];
char substr[ 1024 ];
if ( buf.ReadOneBit() )
{
bool substringcheck = buf.ReadOneBit() ? true : false;
if ( substringcheck )
{
int index = buf.ReadUBitLong( 5 );
int bytestocopy = buf.ReadUBitLong( SUBSTRING_BITS );
Q_strncpy( entry, history[ index ].string, bytestocopy + 1 );
buf.ReadString( substr, sizeof(substr) );
Q_strncat( entry, substr, sizeof(entry), COPY_ALL_CHARACTERS );
}
else
{
buf.ReadString( entry, sizeof( entry ) );
}
pEntry = entry;
}
// Read in the user data.
unsigned char tempbuf[ CNetworkStringTableItem::MAX_USERDATA_SIZE ];
memset( tempbuf, 0, sizeof( tempbuf ) );
const void *pUserData = NULL;
int nBytes = 0;
if ( buf.ReadOneBit() )
{
if ( IsUserDataFixedSize() )
{
// Don't need to read length, it's fixed length and the length was networked down already.
nBytes = GetUserDataSize();
Assert( nBytes > 0 );
tempbuf[nBytes-1] = 0; // be safe, clear last byte
buf.ReadBits( tempbuf, GetUserDataSizeBits() );
}
else
{
nBytes = buf.ReadUBitLong( CNetworkStringTableItem::MAX_USERDATA_BITS );
ErrorIfNot( nBytes <= sizeof( tempbuf ),
("CNetworkStringTableClient::ParseUpdate: message too large (%d bytes).", nBytes)
);
buf.ReadBytes( tempbuf, nBytes );
}
pUserData = tempbuf;
}
// Check if we are updating an old entry or adding a new one
if ( entryIndex < GetNumStrings() )
{
SetStringUserData( entryIndex, nBytes, pUserData );
#ifdef _DEBUG
if ( pEntry )
{
Assert( !Q_strcmp( pEntry, GetString( entryIndex ) ) ); // make sure string didn't change
}
#endif
pEntry = GetString( entryIndex ); // string didn't change
}
else
{
// Grow the table (entryindex must be the next empty slot)
Assert( (entryIndex == GetNumStrings()) && (pEntry != NULL) );
if ( pEntry == NULL )
{
Msg("CNetworkStringTable::ParseUpdate: NULL pEntry, table %s, index %i\n", GetTableName(), entryIndex );
pEntry = "";// avoid crash because of NULL strings
}
//.........这里部分代码省略.........
示例3: HandleConnectionLessPacket
int HandleConnectionLessPacket(char*ip, short port, int connection_less, bf_read& recvdata)
{
recvdata.ReadLong();
int header = 0;
int id = 0;
int total = 0;
int number = 0;
short splitsize = 0;
if (connection_less == 1)
{
header = recvdata.ReadByte();
}
else {
id = recvdata.ReadLong();
total = recvdata.ReadByte();
number = recvdata.ReadByte();
splitsize = recvdata.ReadByte();
}
switch (header)
{
case '9':
{
recvdata.ReadLong();
char error[1024];
recvdata.ReadString(error, 1024);
printf("Connection refused! [%s]\n", error);
NET_Reconnect();
return 0;
}
case 'A': // A2A_GETCHALLENGE
{
bconnectstep = 2;
long magicnumber = recvdata.ReadLong();
serverchallenge = recvdata.ReadLong();
ourchallenge = recvdata.ReadLong();
authprotocol = recvdata.ReadLong();
steamkey_encryptionsize = recvdata.ReadShort(); // gotta be 0
recvdata.ReadBytes(steamkey_encryptionkey, steamkey_encryptionsize);
recvdata.ReadBytes(serversteamid, sizeof(serversteamid));
vacsecured = recvdata.ReadByte();
printf("Challenge: %lu__%lu|Auth: %x|SKey: %lu|VAC: %x\n", serverchallenge, ourchallenge, authprotocol, steamkey_encryptionsize, vacsecured);
char connectpkg[700];
memset(connectpkg, 0, sizeof(connectpkg));
bf_write writeconnect(connectpkg, sizeof(connectpkg));
bf_read readsteamid(connectpkg, sizeof(connectpkg));
writeconnect.WriteLong(-1);
writeconnect.WriteByte('k');//C2S_CONNECT
writeconnect.WriteLong(0x18);//protocol ver
writeconnect.WriteLong(0x03);//auth protocol 0x03 = PROTOCOL_STEAM, 0x02 = PROTOCOL_HASHEDCDKEY, 0x01=PROTOCOL_AUTHCERTIFICATE
writeconnect.WriteLong(serverchallenge);
writeconnect.WriteLong(ourchallenge);
writeconnect.WriteUBitLong(2729496039, 32);
writeconnect.WriteString(nickname); //nick
writeconnect.WriteString(password); // pass
writeconnect.WriteString("2000"); // game version
unsigned char steamkey[STEAM_KEYSIZE];
unsigned int keysize = 0;
steamuser->GetAuthSessionTicket(steamkey, STEAM_KEYSIZE, &keysize);
CSteamID localsid = steamuser->GetSteamID();
writeconnect.WriteShort(242);
unsigned long long steamid64 = localsid.ConvertToUint64();
writeconnect.WriteLongLong(steamid64);
if (keysize)
writeconnect.WriteBytes(steamkey, keysize);
net.SendTo(ip, port, connectpkg, writeconnect.GetNumBytesWritten());
return 0;
}
case 'B': // S2C_CONNECTION
{
if (bconnectstep == 2)
{
//.........这里部分代码省略.........