Hallo allerseits,
ich habe leider gerade ein großes Problem mit C++. Ich arbeite an einem Programm, welches über TELNET eine Verbindung mit einem bestimmten Server herstellt. Die Verbindung ist kein Ding; Socket erstellt, Port 23 und schon geht's. Schwierig ist dagegen der Datenaustausch. Denn bevor die gegenseite Klartext sendet und empfangen kann, muss erst einmal ein Handshake durchgeführft werden. Wie der aussehen muss, weiß ich dank Sniffersoftware.
Über den Socket versende ich Strings, die ich mir vorher als char erstellt habe. Und weil mir das Nachgucken in den ASCII-Tabellen zu mühselig war, gebe ich den Zeichencode, der natürlich in Wirklichkeit dem über die Leitung gesendete Byte entspricht, gleich so ein. Funktionierte bei den ersten beiden Schritten auch wunderbar, bloß ab den dritten nicht mehr. Denn das zu Versendende sieht so aus:
char handshake2[27] = {0xff,0xfd,0x01,0xff,0xfd,0x03,0xff,0xfb,0x27,0xff,0xfb,0x1f,0xff,0xfa,0x1f,0x00,0x50,0x00,0x19,0xff,0xf0,0xff,0xfb,0x00,0xff,0xfd,0x00};
Wie ihr seht, wenthält diese Zeile u.a. 0x00, also acht Nullbits. Blöd dabei ist, dass 00 in der ASCII-Tabelle dem Zeichen NUL entspricht, oder in C++ eben End Of String. Natürlich muss aber der komplette String übertragen werden, damit die Nachricht an den Server überhaupt Sinn macht.
Ich habe bereits alle mir bekannten Variationen von \0 ausprobiert, bin aber jedes Mal gescheitert. Wisst ihr, wie ich die Hexadezimalnull über einen String übertragen kann? Irgendwie muss das ja gehen.
Danke vielmals für Antworten!
Seb
ich habe leider gerade ein großes Problem mit C++. Ich arbeite an einem Programm, welches über TELNET eine Verbindung mit einem bestimmten Server herstellt. Die Verbindung ist kein Ding; Socket erstellt, Port 23 und schon geht's. Schwierig ist dagegen der Datenaustausch. Denn bevor die gegenseite Klartext sendet und empfangen kann, muss erst einmal ein Handshake durchgeführft werden. Wie der aussehen muss, weiß ich dank Sniffersoftware.
Über den Socket versende ich Strings, die ich mir vorher als char erstellt habe. Und weil mir das Nachgucken in den ASCII-Tabellen zu mühselig war, gebe ich den Zeichencode, der natürlich in Wirklichkeit dem über die Leitung gesendete Byte entspricht, gleich so ein. Funktionierte bei den ersten beiden Schritten auch wunderbar, bloß ab den dritten nicht mehr. Denn das zu Versendende sieht so aus:
char handshake2[27] = {0xff,0xfd,0x01,0xff,0xfd,0x03,0xff,0xfb,0x27,0xff,0xfb,0x1f,0xff,0xfa,0x1f,0x00,0x50,0x00,0x19,0xff,0xf0,0xff,0xfb,0x00,0xff,0xfd,0x00};
Wie ihr seht, wenthält diese Zeile u.a. 0x00, also acht Nullbits. Blöd dabei ist, dass 00 in der ASCII-Tabelle dem Zeichen NUL entspricht, oder in C++ eben End Of String. Natürlich muss aber der komplette String übertragen werden, damit die Nachricht an den Server überhaupt Sinn macht.
Ich habe bereits alle mir bekannten Variationen von \0 ausprobiert, bin aber jedes Mal gescheitert. Wisst ihr, wie ich die Hexadezimalnull über einen String übertragen kann? Irgendwie muss das ja gehen.
Danke vielmals für Antworten!
Seb