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: 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(); }
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 |
|
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. |
|
DejaVu |
» 2011-03-08 13:39:53 Za mało kodu dałeś by jakieś wnioski wyciągnąć. |
|
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 |
|
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. |
|
dmx81 |
» 2011-03-08 14:57:59 to co odczytujesz,to tekst?czy obiekt,z ktorego wyciagasz tekst? |
|
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; |
|
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. |
|
« 1 » 2 |