Problem mit Socket Funktion send
-
Also ich möchte gern ein paar Daten über Windows Sockets verschicken.
Das Problem send akzeptiert als zweiten Parameter nur ein char Feld(Werte -128 to 127), da aber einige meiner Daten grösser als 127 sind geht das so nicht, jetzt meine Frage kann man auch ein unsigned chr Feld verschicken?? Das ginge ja dann bis 255, würde reichen... Hab es mal einfach probiertunsigned char buf[50]; char[0]=...; ... char[49]=...; send(s,buf,50, 0);
funzt aber nicht, was kann ich da machen?
-
Du kannst alles mögliche verschicken. Einfach nur nach const char* casten und die richtige länge angeben.
-
Aha, und wie caste ich das in einen const char *???
Haste da vielleicht mal einen Codeschnipsel für mich?
-
LOL, du weißt noch nicht mal wie man castet? Armselig...
-
reinterpret_cast
-
@ => du hast auch mal klein angefangen, aber schön für dich das du jetzt der C++ Gott bist und alles weißt und kannst, einer muss es halt sein
-
Vielleicht solltest du dich zunächst mit den Grundlagen beschäftigen, bevor du mit Sockets rumspielst. Deine Fragen klingen immer ein wenig wie "Ich mach hier grad 'ne Herztransplantation. Wie ging das mit dem Händewaschen noch gleich?".
-
Ich werde mich versuchen zu bessern, könnte mir trotzdem jemand erklären wie ich ein
unsigned char[]
in ein
char[]
caste.
-
#include <iostream> using namespace std; int main() { char const* s = "Hallo"; int i=reinterpret_cast<int>(s); cout << "Die Adresse von s ist: "<<i<<'\n'; //schöner würde es mit //cout<<"Die Adresse von s ist: "<<static_cast<void*>(s)<<'\n'; //gehen }
-
falls dir reinterpret_cast nicht geheuer ist, kannst du auch zweimal static_cast benutzen:
send( s, static_cast<const char*>(static_cast<void*>(buf)), 50, 0 );
das ist allerdings noch hässlicher und nur geringfügig sicherer als reinterpret_cast. bleibt die frage, ob es nicht sinnvoller wäre, buf gleich als char[] zu deklarieren. eine andere möglichkeit wäre, send für const unsigned char* zu überladen.