本文整理汇总了C++中NetworkMessage::AddString方法的典型用法代码示例。如果您正苦于以下问题:C++ NetworkMessage::AddString方法的具体用法?C++ NetworkMessage::AddString怎么用?C++ NetworkMessage::AddString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NetworkMessage
的用法示例。
在下文中一共展示了NetworkMessage::AddString方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnReceiveHello
void LiveServer::OnReceiveHello(LivePeer* connection, NetworkMessage* nmsg)
{
uint32_t rvid = nmsg->ReadU32();
if(rvid != __RME_VERSION_ID__)
{
NetworkMessage* omsg = AllocMessage();
omsg->AddByte(PACKET_KICK); // FAREWELL
omsg->AddString("Wrong editor version.");
connection->Send(omsg);
connection->Close();
return;
}
uint32_t net_ver = nmsg->ReadU32();
if(net_ver != __LIVE_NET_VERSION__)
{
NetworkMessage* omsg = AllocMessage();
omsg->AddByte(PACKET_KICK); // FAREWELL
omsg->AddString("Wrong protocol version.");
connection->Send(omsg);
connection->Close();
return;
}
uint32_t client_version = nmsg->ReadU32();
std::string rnick = nmsg->ReadString();
std::string pass = nmsg->ReadString();
wxString upass = wxString(pass.c_str(), wxConvUTF8);
if(password != upass)
{
log->Message(wxT("Client tried to connect, but used the wrong password, connection refused."));
connection->Close();
return;
}
connection->SetNick(wxString(rnick.c_str(), wxConvUTF8));
log->Message(connection->GetNick() << wxT(" (") << connection->GetHost() << wxT(") connected."));
if((ClientVersionID)client_version != gui.GetCurrentVersionID())
{
NetworkMessage* omsg = AllocMessage();
omsg->AddByte(PACKET_CHANGE_CLIENT_VERSION); // CHANGE CLIENT VER
omsg->AddU32(gui.GetCurrentVersionID());
connection->Send(omsg);
}
else
{
// Reply that we have accepted the remote connection
NetworkMessage* omsg = AllocMessage();
omsg->AddByte(PACKET_ACCEPTED_CLIENT); // CONNECTION ACCEPTED WITHOUT ISSUE
connection->Send(omsg);
}
}
示例2: while
bool Protocol77::GameworldLogin () {
// this is valid for 7.7!
// 7.72 has a bit different order of stuff! check out old outcast's sources
NetworkMessage nm;
connectiontype = GAMEWORLD;
nm.AddU8(0x0A); // protocol id
nm.RSABegin();
// encryption keys
for (int i = 0 ; i < 4 ; i++) {
nm.AddU32(key[i]);
}
// in 7.72 onwards move this BEFORE the keys and BEFORE the encryption
nm.AddU16(0x02); // client OS
nm.AddU16(protocolversion);
// are we a gamemaster
nm.AddChar(0);
// account number and password
nm.AddU32(atol(this->username.c_str())); // this does NOT exist before 7.4
nm.AddString(this->charlist[this->charlistselected]->charactername);
nm.AddString(this->password);
nm.RSAEncrypt();
// FIXME inside dump, we should check whether or not socket is still open
// or after dump, at least
nm.Dump(s);
nm.Clean();
nm.FillFromSocket(s );
nm.XTEADecrypt(key);
logonsuccessful = true;
while ((signed int)(nm.GetSize())>0 && ParsePacket(&nm));
if ((signed int)(nm.GetSize())!=0) printf("++++++++++++++++++++DIDNT EMPTY UP THE NETWORKMESSAGE!++++++++++++++++++\n");
if (logonsuccessful) active = true;
return logonsuccessful;
}
示例3: OnReceiveReady
void LiveServer::OnReceiveReady(LivePeer* connection, NetworkMessage* nmsg)
{
// Client has changed server version to the proper one
PeerList::iterator piter = std::find(connecting_clients.begin(), connecting_clients.end(), connection);
if (piter == connecting_clients.end())
{
connection->Close();
return;
}
connecting_clients.erase(piter);
// Find free client id
bool f = false;
for(size_t s = 1; s < 16; ++s)
{
if((1 << s) & ~client_mask)
{
connection->SetClientID(s);
client_mask |= (1 << s);
f = true;
break;
}
}
if(!f)
{
// Not enough room, disconnect!
NetworkMessage* omsg = AllocMessage();
omsg->AddByte(0x81); // FAREWELL
omsg->AddString("Server is full.");
connection->Send(omsg);
connection->Close();
return;
}
connected_clients.push_back(connection);
log->UpdateClientList(connected_clients);
// Let's reply
NetworkMessage* omsg = AllocMessage();
omsg->AddByte(0x80); // HELLO TO YOU TOO!
omsg->AddString(editor->map.getName());
omsg->AddU16(editor->map.getWidth());
omsg->AddU16(editor->map.getHeight());
connection->Send(omsg);
// Change parser
connection->parser = &LiveServer::OnParseEditorPackets;
}
示例4: StartOperation
void LiveServer::StartOperation(wxString msg)
{
for(PeerList::iterator citer = connected_clients.begin(); citer != connected_clients.end(); ++citer)
{
NetworkMessage* nmsg = AllocMessage();
nmsg->AddByte(PACKET_START_OPERATION);
nmsg->AddString(nstr(msg));
(*citer)->Send(nmsg);
}
}
示例5: ONThreadSafe
bool Protocol79::CharlistLogin(const char *username, const char *password) {
NetworkMessage nm;
ONThreadSafe(threadsafe);
connectiontype = CHARLIST;
nm.AddU8(0x01); // protocol id
nm.AddU16(0x02); // client OS
nm.AddU16(protocolversion);
nm.AddU32(fingerprints[FINGERPRINT_TIBIADAT]); // tibia.dat
nm.AddU32(fingerprints[FINGERPRINT_TIBIASPR]); // tibia.spr
nm.AddU32(fingerprints[FINGERPRINT_TIBIAPIC]); // tibia.pic
nm.RSABegin();
// encryption keys
for (int i = 0 ; i < 4 ; i++) {
nm.AddU32(key[i]);
}
// account number and password
nm.AddU32(atol((this->username = username).c_str()));
nm.AddString(this->password = password);
nm.RSAEncrypt();
if (!nm.Dump(s)) {
this->errormsg = "Could not write to socket.\nPossible it's a premature disconnect.\n\nCheck you typed in the correct protocol!";
ONThreadUnsafe(threadsafe);
return false;
}
nm.Clean();
if (!nm.FillFromSocket(s)) {
this->errormsg = "Could not read from socket.\nPossibly it's a premature disconnect.\n\nCheck you typed in the correct protocol!";
ONThreadUnsafe(threadsafe);
return false;
}
printf("Okies, lets decrypt\n");
// this->Close();
nm.XTEADecrypt(key);
printf("Ok, decoded\n");
logonsuccessful = true;
while ((signed int)(nm.GetSize())>0 && ParsePacket(&nm));
if ((signed int)(nm.GetSize())>0) printf("++++++++++++++++++++DIDNT EMPTY UP THE NETWORKMESSAGE!++++++++++++++++++\n");
ONThreadUnsafe(threadsafe);
return logonsuccessful;
}
示例6: BroadcastChat
void LiveServer::BroadcastChat(wxString speaker, wxString message)
{
for(PeerList::iterator citer = connected_clients.begin(); citer != connected_clients.end(); ++citer)
{
NetworkMessage* nmsg = AllocMessage();
nmsg->AddByte(PACKET_SERVER_TALK);
nmsg->AddString(nstr(speaker));
nmsg->AddString(nstr(message));
(*citer)->Send(nmsg);
}
log->Chat(name, message);
}
示例7: Connect
bool RMENet::Connect()
{
wxIPV4address ipaddr;
ipaddr.Hostname("127.0.0.1");//90.230.54.138"));
ipaddr.Service(31312);
socket = newd wxSocketClient(wxSOCKET_NOWAIT);
connection = newd NetworkConnection(this, socket);
socket->SetClientData(connection);
socket->SetEventHandler(*this, wxID_ANY);
socket->SetNotify(wxSOCKET_INPUT_FLAG | wxSOCKET_OUTPUT_FLAG | wxSOCKET_LOST_FLAG);
socket->Notify(true);
wxEvtHandler::Connect(wxID_ANY, wxEVT_SOCKET, wxSocketEventHandler(RMENet::HandleEvent));
socket->Connect(ipaddr, false);
if(!socket || !socket->WaitOnConnect(5, 0) ||
!socket || !socket->IsConnected())
{
if(socket)
socket->Destroy();
socket = nullptr;
delete connection;
connection = nullptr;
return false;
}
NetworkMessage* nmsg = AllocMessage();
nmsg->AddByte(0x00); // Hello!
nmsg->AddU32(__LIVE_NET_VERSION__);
nmsg->AddString(g_settings.getString(Config::LIVE_USERNAME));
nmsg->AddString(g_settings.getString(Config::LIVE_PASSWORD));
connection->Send(nmsg);
return true;
}
示例8: ONThreadSafe
bool ProtocolME0::GameworldLogin () {
NetworkMessage nm;
ONThreadSafe(threadsafe);
connectiontype = GAMEWORLD;
//nm.AddU8(0x14);
//nm.AddString(this->charlist[this->charlistselected]->charactername);
//spcount ++;
if (!strcmp(this->charlist[this->charlistselected]->charactername, "Character Manager")) {
nm.AddU8(0x0C); // charmgr...
nm.AddU8(0x01); // ...enter
FILE *f = fopen((std::string("save/") + this->username + ".ous").c_str(), "r");
ASSERTFRIENDLY(f, "It appears that savefile has mysteriously disappeared. Exiting");
fclose(f);
}
else {
nm.AddU8(0x0A); // player's creature id shall be 1
nm.AddU32(1);
nm.AddU8(0x32); // report bugs?
nm.AddU8(0);
nm.AddU8(0);
nm.AddU8(0x64); // player teleport
nm.AddU16(30);
nm.AddU16(30);
nm.AddU8(7);
int tilesremaining = 18*14*7;
for (int i = 0; i < 18; i ++)
for (int j = 0; j < 14; j++) {
printf("%d\n", tilesremaining);
nm.AddU16(102);
if (i == 8 && j == 6) {
nm.AddU16(0x0061);
nm.AddU32(0); // remove with this id
nm.AddU32(1); // creatureid -- player is 1
nm.AddString("Newbie");
nm.AddU8(25); // health
nm.AddU8(0); //dir
nm.AddU16(128); // lookid
nm.AddU8(50);
nm.AddU8(60);
nm.AddU8(70);
nm.AddU8(80);
nm.AddU8(0); // addons
nm.AddU8(0); // lightlevel
nm.AddU8(0); // lightcolor
nm.AddU16(500); // speed
nm.AddU8(0); // skull
nm.AddU8(0); // shield
}
tilesremaining--;
nm.AddU16(0xFF00);
}
while(tilesremaining) {
nm.AddU8(tilesremaining > 255 ? 255 : tilesremaining);
tilesremaining -= tilesremaining > 255 ? 255 : tilesremaining;
printf("%d\n", tilesremaining);
nm.AddU8(0xFF);
}
}
((GM_MainMenu*)game)->DestroyCharlist();
// by default logon is a success
logonsuccessful = true;
packetparsing:
while ((signed int)(nm.GetSize())>0 && ParsePacket(&nm));
if ((signed int)(nm.GetSize())>0) printf("++++++++++++++++++++DIDNT EMPTY UP THE NETWORKMESSAGE!++++++++++++++++++\n");
ONThreadUnsafe(threadsafe);
return logonsuccessful;
}
示例9: SetProtocolStatus
bool Protocol79::GameworldLogin () {
// this is valid for 7.9!
// 7.7 has a bit different order of stuff! check out old outcast's sources
NetworkMessage nm;
SetProtocolStatus("Preparing to transfer logon data...");
connectiontype = GAMEWORLD;
nm.AddU8(0x0A); // protocol id
// in 7.72 onwards move this BEFORE the keys and BEFORE the encryption
nm.AddU16(0x02); // client OS
nm.AddU16(protocolversion);
SetProtocolStatus("RSA encryption...");
nm.RSABegin();
//key[3] = 92;
// encryption keys
for (int i = 0 ; i < 4 ; i++) {
nm.AddU32(key[i]);
//printf("KEY %d - %d\n", i, key[i]);
}
// are we a gamemaster
nm.AddChar(0);
// account number and password
nm.AddU32(atol(this->username.c_str())); // this does NOT exist before 7.4
nm.AddString(this->charlist[this->charlistselected]->charactername);
nm.AddString(this->password);
nm.RSAEncrypt();
SetProtocolStatus("Transmitting logon data...");
if (!nm.Dump(s)) {
this->errormsg = "Could not write to socket.\nPossible it's a premature disconnect.\n\nCheck you typed in the correct protocol!";
return false;
}
// SetStance(DEFENSIVE, STAND);
SetProtocolStatus("Waiting for response...");
//nm.Clean();
NetworkMessage nm2;
//nm.FillFromSocket(s);
if (!nm2.FillFromSocket(s )) {
this->errormsg = "Could not read from socket.\nPossibly it's a premature disconnect.\n\nCheck you typed in the correct protocol!";
return false;
}
nm2.XTEADecrypt(key);
logonsuccessful = true;
while ((signed int)(nm2.GetSize())>0 && ParsePacket(&nm2));
if ((signed int)(nm2.GetSize())!=0) printf("++++++++++++++++++++DIDNT EMPTY UP THE NETWORKMESSAGE!++++++++++++++++++\n");
if (logonsuccessful) active = true;
return logonsuccessful;
}