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

Winsockety - Jak wysyłać pakiety do serwera

Ostatnio zmodyfikowano 2012-03-09 19:46
Autor Wiadomość
Chlorek
Temat założony przez niniejszego użytkownika
Winsockety - Jak wysyłać pakiety do serwera
» 2012-03-06 21:06:33
Witam, problem jak w temacie, chcę wysłać pakiet do wybranego serwera za pomocą winsocket'ów, pakiety odbierane przez serwer muszą być odpowiednio kodowane (big-endian), do tego używam funkcji ntohl(), jednak przygotowany pakiet nie dociera do serwera (serwer go w ogóle nie dostaje), wszelkie inne pakiety docierają. Mój kod:
C/C++
char PacketID = HANDSHAKE;
send( sock, & PacketID, 1, 0 );
sLenght = 7; //zmienna short
send( sock,( char * ) ntohs( sLenght ), 1, 0 ); //ten pakiet dociera
send( sock,( char * ) ntohl( atol( "Chlorek" ) ), 7, 0 ); //ten pakiet nie dociera do serwera[/code]
P-52112
CodeMeister
» 2012-03-06 21:26:15
Ascii to long..? dodaj obsluge bledow - może tam sie cos krzaczy albo blad jest po stronie servera
P-52118
Chlorek
Temat założony przez niniejszego użytkownika
» 2012-03-06 21:36:50
To co wysyłam to nickname do logowania, muszę go przerobić najpierw na long (taką zmienną przyjmuje htonl/ntohl), a co do błędu serwera to raczej nie możliwe, sprawdzałem na dwóch serwerach (jeden pisany w java'ie, a drugi w c++), ten w c++ wypisuje wszystkie pakiety jakie dostaje i nic nie pisze o tym bym dostał pakiet "Chlorek".
#Edit
A co do debugowania, to być może błąd w ntohl() ? Jeśli przekonwertowaną tym wartość próbuję wyświetlić (strumieniem cout, czy też własnoręcznie napisaną funkcją) klient się wysypuje.
P-52123
CodeMeister
» 2012-03-06 21:46:11
<Double post>
P-52125
CodeMeister
» 2012-03-06 21:46:55
A wyslij sam tekst tzn. nie pakuj go w żadna funkcję
P-52126
Chlorek
Temat założony przez niniejszego użytkownika
» 2012-03-06 21:55:51
Chciałbym żeby to było tak proste, jednak twórca aplikacji serwera pomyślał, aby używać sieciowego porządku byte'ów (network byte order) do komunikacji, wysyłając do serwera pakiet Chlorek, on stwierdza, że dostaje ponad 1700 znaków, a oczekuje nie więcej niż 32. Próbowałem też wysyłać tablicę bajtów ale to nic nie zmieniło.
P-52129
CodeMeister
» 2012-03-06 22:05:20
A moze aton()i ntoa() ascii to network...
P-52131
Chlorek
Temat założony przez niniejszego użytkownika
» 2012-03-06 22:19:13
A dowiem się jaki header należy dołączyć, bo dla mojego kompilatora funkcja jest nieznana?
P-52134
« 1 » 2
  Strona 1 z 2 Następna strona