Communication über telnel 0 in string bringt fehler

Gast #2678128
Lesenswert?

Hallo an alle,

zuerst danke an alle die für dieses Forum immer Ihrer Zeit spenden. es 
hat mir bis jetzt so viel geholfen.

Meine frage ist:
ich möchte eine Kommunikation über Telnet dürchführen.
Leider ist es nicht möglicht, dass ich einen "0" sende.

Fehler--> Malformed Packet.

so sieht das schreiben:

1
 tcpWrite(iopen, "\xff\xfb\x18");//Terinal Type
2
  tcpWrite(iopen, "\xff\xfb\x25");//Authentification option
3
  tcpWrite(iopen, "\xff\xfb\x01");//Echo
4
  tcpWrite(iopen, "\xff\xfb\x00");//Binary Transmission

als info:
1
tcpWrite(int socket, string data);//Terinal Type
return anzahl der gesendete Byte oder -1 bei Fehler.

Die ersten drei Befehlen laufen ganz gut aber beim schreiben der letzten 
Befehl "tcpWrite(iopen, "\xff\xfb\x00");" kriege ich der obengennanten 
Fehler. Er liest die "ff fb" aber die 00 nicht. Er denkt, dass es die 
"\0" Null-terminierung ist.
Wie kann ich der Fehler beheben, irgend einen trick?

ich danke euch im voraus.
anna
#2678218
Lesenswert?

anna schrieb:

> Befehl "tcpWrite(iopen, "\xff\xfb\x00");" kriege ich der obengennanten
> Fehler. Er liest die "ff fb" aber die 00 nicht. Er denkt, dass es die
> "\0" Null-terminierung ist.
> Wie kann ich der Fehler beheben, irgend einen trick?

Das kann nicht funktionieren.
Ein String ist in C nun mal eine Abfolge von Bytes, die mit einem \0 
Byte beendet wird. Punkt. Das ist in C per Definition ein String und es 
gibt nichts, was du dagegen tun kannst.

Ergo KANNST du nicht ein Bytefeld, welches ein \0 Byte enthält über eine 
Funktion schleusen, die einen String erwartet.

In Telnet gibt es sowas wie einen binary Transmission Mode.
Allerdings ist dann die Funktion tcpWrite mit Sicherheit die falsche 
Funktion dafür. Da muss es dann noch eine Funktion geben, deren Signatur 
irgendwoe so aussieht

  size_t Function( int socket, void* data, size_t nrBytes );

so irgendwas in der Richtung. Also eine Funktion, der du explizit sagen 
kannst, wieviele Bytes in deinem Array sind.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren