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

Winsock kolejny problem :)

Ostatnio zmodyfikowano 2011-03-09 02:19
Autor Wiadomość
yoogi
Temat założony przez niniejszego użytkownika
Winsock kolejny problem :)
» 2011-03-08 06:53:48
Witam mam kolejny problem z winsockiem tym razem chodzi o to że nie przesyła mi dobrze danych a dokładniej wyświetla jakiś dziwny znak kilka razy takie jak by pół 'H' kod mam taki:
C/C++
if( cmd == '9' )
{
    strcpy( example.text, "9" );
    char * toSend = reinterpret_cast < char *>( & example );
    send( sClient, toSend, sizeof( example ), 0 );
   
    char odbiorcza[ 100 ];
    recv( sListen, odbiorcza, sizeof( odbiorcza ), 0 );
    cout << odbiorcza;
    getch();
}
C/C++
if( * buffer == '9' )
{
    int j = v.size();
    char bufer[ 100 ];
    itoa( j, bufer, 10 );
   
    send( sClient, bufer, sizeof( bufer ), 0 );
    cout << bufer;
    getch();
}
dokładniej to to działa że jak się prześle

strcpy(example.text, "9");
char *toSend = reinterpret_cast<char*>(&example);
send(sClient, toSend, sizeof(example), 0);
to wtedy drugi if się uruchamia
P-28996
dmx81
» 2011-03-08 07:33:42
czy example to string?
jesli tak,to jest on pewnie nie zakonczony '\0', a poniej rzutujesz go na char*, gdzie w/w znak mowi o zakonczeniu tablicy, a jesli tego znaku na koncu tablicy nie ma, wiec nie wiem, co zwroci sizeof(example)
mialem podobny problem (krzaczki) przy rzutowaniu czegos na char*, co nie bylo null-terminated.

tak wiec u mnie rozwiazalem problem, dopisujac do nowej tablicy char znak '\0'
ale nie wiem, czy akurat na tym polegatwoj problem, powodzenia :)

reinterpret_cast - wydaje mi sie, ze ten rodzaj rzutowania wymaga pozniej rowniez rzutowania spowrotem na swoj pierwotny typ -to tak przy okazji.
P-28997
DejaVu
» 2011-03-08 13:39:53
Za mało kodu dałeś by jakieś wnioski wyciągnąć.
P-28998
yoogi
Temat założony przez niniejszego użytkownika
» 2011-03-08 13:53:46
example.text to jest tablica charów

#edit
zapomniałem o najważniejszym example.text przesyła normalnie tylko to drugie nie chcę wysłać normalnie
P-28999
DejaVu
» 2011-03-08 14:41:54
1) Twój kod wysyła strukturę (a nie tekst)
2) Może masz źle zrobione odczytywanie struktury.
P-29000
dmx81
» 2011-03-08 14:57:59
to co odczytujesz,to tekst?czy obiekt,z ktorego wyciagasz tekst?
P-29001
yoogi
Temat założony przez niniejszego użytkownika
» 2011-03-08 21:16:09
skrócę nieco kod:
ta funkcja wysyła dane:
send( sClient, bufer, sizeof( bufer ), 0 );
a ta odbiera:
char odbiorcza[ 100 ];
    recv( sListen, odbiorcza, sizeof( odbiorcza ), 0 );
    cout << odbiorcza;
P-29012
vinterdo
» 2011-03-08 22:57:38
Jeżeli do przesyłania używasz UDP to mogą ci się pakiety po drodze rozpadać. Jak TCP to musi być problem z samym tekstem.
P-29024
« 1 » 2
  Strona 1 z 2 Następna strona