Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

winsock odbieranie pakietow

Ostatnio zmodyfikowano 2012-04-11 10:41
Autor Wiadomość
hincu
Temat założony przez niniejszego użytkownika
winsock odbieranie pakietow
» 2012-04-10 19:05:26
siema wzialem sie za pisanie protokolu i pojwail sie problem przy odbiorze pakietow :/
tak to wyglada http://pokazywarka.pl/waqzk5/
C/C++
std::string Packet::PacketBuilder( PacketFamily & family, PacketAction & action, std::string & data )
{
    std::string temp;
    std::string tempp;
    temp.clear();
    tempp.clear();
    temp = GetFamilyName();
    temp += "_";
    temp += this->GetActionName();
    temp += "_";
    temp += data;
    Size = sizeof( temp );
    tempp = Size;
    tempp += "_0";
    tempp += temp;
    Data = tempp;
    return tempp;
}
C/C++
void Server::SendPacket()
{
    send( cClient.sClient, sPacket.PacketBuilder( sPacket.FamilyID, sPacket.ActionID, sPacket.Data ).c_str(), sPacket.GetSize(), 0 );
    std::cout << "SEND: " << sPacket.PacketBuilder( sPacket.FamilyID, sPacket.ActionID, sPacket.Data ).c_str() << std::endl;
}

void Server::Ping()
{
    if( PingTimer.GetElapsedTime() >= 5.0f )
    {
        PacketFamily family = PING;
        PacketAction action = REQUEST;
        sPacket.SetFamilyID( family );
        sPacket.SetActionID( action );
        SendPacket();
        PingTimer.Reset();
    }
}

C/C++
void Client::Recv()
{
    std::string temp;
    recv( ServerSocket, rBuffer, 1, 0 );
    sBuffer += rBuffer;
    std::cout << "RECV: " << sBuffer.c_str() << std::endl;
}
zwracam to w ten sposob i dostaje tylko to co na screenach : / co moge robic zle?
P-54258
Admixior
» 2012-04-10 21:14:56
Mam pytanie. Co zwraca funkcja
Packet::GetSize()
 ?
Jakbyś mógł napisać dokładnie jakie wyrażenie, co stoi przy return.

//edit: nie podoba mi się wyrażenie
C/C++
std::string temp;
Size = sizeof( temp );
Czy nie powinno być Size = temp.size();
P-54269
hincu
Temat założony przez niniejszego użytkownika
» 2012-04-10 21:28:14
zwraca int, rozmiar wysylanego pakietu
P-54271
Admixior
» 2012-04-10 22:30:18
hmm.. Tyle się domyśliłem.
Chodziło mi bardziej jaka to jest zmienna i czy na pewno jest prawidłowy rozmiar paczki(w jaki sposób go liczysz).

W funkcji PacketBuilder masz przypisanie
Size = sizeof( temp );
Czyli przypisujesz ->stały rozmiar klasy string( w moim kompilatorze jest to 32 bajty). Nie rozumiem w jakim celu. Nie lepiej by było gdybyś przypisał rozmiar samego tekstu który dodajesz w linijce
tempp += temp;
.
Wykonując poniższe operacje w moim przypadku zakładając że zmienna size jest typu int to w tempp znajduje się jeden bajt (ostatni ze zmiennej size) który ma wartość 32.
C/C++
Size = sizeof( temp );
tempp = Size;

To samo co by się zrobiło taką operację
tempp = '\x32';
.

I jeszcze kilka pytań, gdzie jest deklaracja i jaki typ ma zmienna "Data" (od dużej litery) w pierwszej funkcji, rBuffer w ostatniej funkcji, oraz mógłbyś napisać linijkę która zwraca wartość w funkcjis Packet.GetSize(), czy jest to return Data.size();, czy return Size; ,czy co innego.
P-54277
hincu
Temat założony przez niniejszego użytkownika
» 2012-04-11 07:20:00
Data to string a getsize zwraca Data.size(); : P
wiem troche chaotycznie ale co zrobic jak nic nie zrobic XD
P-54286
hincu
Temat założony przez niniejszego użytkownika
» 2012-04-11 10:41:39
problem rozwiazany, teraz musze pomyslec jak szybko odbierac pakiety w real time zeby nie bylo lagow : P
P-54289
« 1 »
  Strona 1 z 1