Mit TCP Bilder verschicken?
-
Hallo Leute ich habe veruscht ein Bild mit einem Vector ein und auszugeben (was auch 1a funktioniert),
aber wie kann ich den Vector über TCP verschicken.
send(...) will ja nur char varis annehmen und eine char vari ist ja auchnur bestimmt groß und wenn das Bild größer ist dann kommt ein error ...also wie kann ich es am besten machen

-
Tibolus schrieb:
send(...) will ja nur char varis annehmen und eine char vari ist ja auchnur bestimmt groß und wenn das Bild größer ist dann kommt ein error ...
Und jetzt noch mal auf Deutsch bitte.
send(sock, &v[0], v.size(), 0);
-
cooky451 schrieb:
Tibolus schrieb:
send(...) will ja nur char varis annehmen und eine char vari ist ja auchnur bestimmt groß und wenn das Bild größer ist dann kommt ein error ...
Und jetzt noch mal auf Deutsch bitte.
send(sock, &v[0], v.size(), 0);sorry :DD
alsooo ....die TCP funktion zum Senden (send)
und diese funktion kann nur char variablen senden ...und eine char variable ist ja z.b. char bla[100]; kann dann ja nur 100 zeichen aufnehmen ^^
und deswegen muss es noch einen andren weg geben

-

Nein, die Funktion kann nur Speicherblöcke schicken. Der Pointer sagt wo der Block anfängt, und der dritte Parameter wie groß der Block ist. Ich habe dir die Lösung mit std::vector doch schon oben geschrieben:std::vector<char> buf = loadImage("mein_bild.bmp"); send(sock, &buf[0], buf.size(), 0);
-
aber schickt der so ncihtnur den vector[0] rüber ? und nicht z.b. [0] -[1000] ??
oder wird das image nur im vector [0] geladen ?
und wie ist es z.b. mit exe dateien oder mit anderen datein ?
-

Ich muss dir leider mitteilen, dass du die Funktionsweise von send() überhaupt nicht verstanden hast. Lies dir mal was zu Pointern durch, vielleicht macht es dann klick. Und frag dich mal selbst, wozu der dritte Parameter der send() Funktion eigentlich da ist.
-
doch eigendlich weiß ich wie send funzt
vielleicht nicht gut aber etwas 
also
send(SOCKET,(z.b.char variable)KK,(größe die übertragen werden soll, meist mit sizeof festzustellen , es geht aber auch eine zahl)300,0)also
for example
send(s,dim,300,0);oder
send(s,"whats up?",10,0,);
aber vectoren ahbe ich nie so gut verstanden

nur mit push_back etc.
-
Hä? Du willst mir ernsthaft erzählen, dass du das Vektor Beispiel nicht raffst aber das hier verstehst?
char buf[] = "Hallo, Welt!"; send(sock, buf, sizeof(buf) - 1, 0);Jetzt hast du mich völlig verwirrt. Hast du überhaupt eine vage Vorstellung davon, wie ein std::vector intern funktioniert?
Edit:
Und das sind keine char Variablen!
"Hallo, Welt" <- const char*
char dim[300]; <- char[300], kann zerfallen zu char*.
-
Warte mal, vielleicht verstehe ich dein Problem jetzt. Du weißt nicht was Pointer sind und denkst, "..." bzw. Arrays würden hier quasi ein Objekt bleiben?
void print_with_putchar_in_c_style(const char *s) // Erwartet einen Pointer auf const char. { while (*s != '\0') // C-Strings sind Nullterminiert, also ausgeben, bis wir auf eine 0 stoßen. { std::putchar(*s); ++s; // Wir erhöhen den Pointer, weil der String an einem Stück im Speicher liegt. } } int main() { char a[] = "Hallo, Welt!"; print_with_putchar_in_c_style(a); // a zerfällt hier in einen Zeiger auf sein erstes Element. An dieser Stelle völlig äquivalent zu &a[0]. std::vector<char> b(std::strlen(a) + 1); // +1 wegen der Nullterminierung. std::strcpy(&b[0], a); // Funktioniert wieder ganz ähnlich wie die Funktion oben. print_with_putchar_in_c_style(&b[0]); }So ähnlich darfst du dir send() auch vorstellen. Hilft dir das irgendwie weiter?