wxString zu const char[]
-
Hallo,
normalerweise ist meine Devise ja, der Weg ist das Ziel. Nur leider finde ich derzeit keinen Weg mein Problem Vernünftig zu lösen. Daher mein Hilferuf.
Ich probiere mich gerade wieder mal an den Sockets und der Netzwerkprogrammierung mit Hilfe von wxWidgets. Ich habe eine Server-Klasse geschrieben, die meine Daten empfängt und senden soll. Das Empfangen klappt schon. Wenn ich mit dem Mozilla Firefox meinen Server anspreche bekomme ich schon schöne Daten die ich auch verarbeiten kann.
#define NETWORK_MSG_SIZE 10000 wxString myNetwork::MessageGet(wxSocketBase *sock) { char buf [NETWORK_MSG_SIZE + 1]; memset(buf, 0, NETWORK_MSG_SIZE + 1); // Nachricht lesen wxString out; sock->Read(buf, NETWORK_MSG_SIZE).LastCount(); wxString s = wxString::FromAscii(buf); s.Trim(true); return s; }
Mein Problem ist das senden:
bool myNetwork::MessageSend(wxSocketBase *sock, const wxString& s) { char buf [] = "Hallo Welt."; //buf = s.mb_str(); sock->SetFlags(wxSOCKET_WAITALL); sock->Write(buf, sizeof(buf)); if (sock->Error()) { ErrorCodeSet(1100); return false; } return true; }
Wenn ich das so mache wie die Funktion gerade steht, bekommt der Mozille schön die Daten "Hallo Welt\0", nur mein wxString will nicht gesendet werden. Ich habe schon die c_str(), c_wstr(), mb_str(), fn_str() usw versucht, auch die Funktionen mit wxWCharBuffer als Rückgabewert und nen cast versucht.
Natürlich habe ich auch versucht mit cstrings zu arbeiten und den buffer buf[NETWORK_MSG_SIZE] anzulegen und mit strncpy_s() zu arbeiten.
Kurz: Ich bin zu doof, das ganze richtig zu convertieren oder zu casten.
Zu Hilfe,
danke,
Stefan