Winsock send()

Skini

Erfahrenes Mitglied
Hi,
ich sitze seit einigen Tagen an folgendem Problem:
Die Winsock Funktion send() benötigt die Parameter SOCKET s, const char *buf, int len, int flags. Statt const char * habe ich einen String, der etliche male \0 enthält,
wenn ich ihn über .c_str() in ein const char * umwandle, habe ich statt ca. 5000 Bytes nur 4 :). Ich habe dass ganze so eingebaut:
C++:
//...
string buf2 = parse(string1);
string buf3 = buf2;
//...
send(clients[i],buf3.c_str(),(int)strlen(buf3.c_str()),0);
//...
Wer weiss Rat?
Skini
 
Hi,
ich sitze seit einigen Tagen an folgendem Problem:
Die Winsock Funktion send() benötigt die Parameter SOCKET s, const char *buf, int len, int flags. Statt const char * habe ich einen String, der etliche male \0 enthält,
wenn ich ihn über .c_str() in ein const char * umwandle, habe ich statt ca. 5000 Bytes nur 4 :). Ich habe dass ganze so eingebaut:
C++:
//...
string buf2 = parse(string1);
string buf3 = buf2;
//...
send(clients[i],buf3.c_str(),(int)strlen(buf3.c_str()),0);
//...
Ein std::string hat bereits eine Länge gespeichert. Warum willst du dann nochmal eine neue Länge berechnen? (was mit strlen ja auch gar nicht geht)

Die std::string::c_str Methode ist dafür auch etwas ungeeignet, weil du gar keinen \0 terminierten C-String brauchst.
C++:
send(clients[i], buf3.data(), buf3.size(), 0);
Gruß
 
Zurück