winsock



  • Hallo,

    ich habe da mal eine Frage - würde mich sehr freuen, wenn iht mir helfen könntet

    Ich kenne mich mit Sockets nicht aus.

    mein Vorhaben
    Ich will Daten zu einenm Server schicken und empfangen. vom Server weiß ich die IP-Adresse und den Port. Ich muss an den Server unsigned char Daten schicken also keine ASCII-Zeichen. Das ganze soll dann noch einigermaßen schnell gehen und in eine DLL ausgelagert werden.

    Mit der erstellung von DLL's und Protokollen TCP/IP Ethernet... kenne ich mich sehr gut aus.

    meine Frage:
    kann ich das mit Sockets machen?
    kennt jemand ein gutes Tutorial oder Beispiele?

    wäre euch sehr dankbar wenn ihr mir helfen könntet, habe zwar schon 2 Tutorials angeschaut. Nach dem MSDN Beispiel habe ich mich auch mit dem Server Verbinden können und an ihn ASCII2 Daten senden hat auch funktioniert.

    Wie kann ich aber unsigned char Zahlen versenden? wie sehe ich was er antwortet

    Gruß Tupo13



  • send, recv :p



  • Tupo13 schrieb:

    kann ich das mit Sockets machen?

    Wie willst Du es denn sonst machen?

    Tupo13 schrieb:

    kennt jemand ein gutes Tutorial oder Beispiele?

    http://www.codeproject.com/internet/winsockintro02.asp
    http://www.codeproject.com/Purgatory/winsock.asp

    Tupo13 schrieb:

    Wie kann ich aber unsigned char Zahlen versenden?

    Casten?

    Tupo13 schrieb:

    wie sehe ich was er antwortet

    recv !?



  • Danke für eure schnellen Antworten

    @ Jochen

    Wie willst Du es denn sonst machen?

    Du hattest mir schon einmal geholfen, vielleicht kannst du dich noch daran erinnern. Momentan mache ich es mit pcap.h ich verschicke jedes Paket einzel
    berechne die Checksummen... Das Problem ist nur, dass mir der Windowskernel ein strich durch die Rechnung macht, deshalb habe ich beschlossen wie du mir damals geraten hast es mit sockets zu machen, wenn das denn geht.

    Gruß Tupo13



  • Sehr gute Idee! Die könnte von mir stammen 😃



  • LOL! Immer diese Frickler.



  • http://www.c-worker.ch -> Tutorials :xmas2:

    MfG Mailmaster :xmas1:



  • Und schonmal im voraus: nope du musst dich nicht darum kümmern ob auch wirklich alle daten bei der anderen Seite ankommen, das macht TCP schon automatisch für dich. 🕶



  • Hallo ich habe jetzt folgendes Problem

    Ich will zum Beispiel dieses Array senden

    unsigned char sendbuf[32] = {0xff,0xff,0xff,0xff,0xff};
    

    Das Problem ist jetzt, dass send aber ein char Array erwartet. So geht es nicht:

    bytesSent = send( ConnectSocket,static_cast<char[32]>(sendbuf), 23, 0 );
    

    Wie kann ich jetzt unsigned char daten verschicken? Gibt es da eine andere Funktion?

    Gruß Tupo13



  • Wenn man nicht programmieren kann sollte man besser die Finger von Netzwerkprogrammierung lassen.



  • @kommentar

    danke wirklich sehr konstruktiv

    Wenn man nicht programmieren kann sollte man besser die Finger von Netzwerkprogrammierung lassen.

    Ich programmiere wirklich, wie man vielleicht ahnen kann, noch nicht lange.
    Was aber ist bitte schön verwerflich daran wenn ich es versuche?

    Ein paar Posts zuvor hatte man mir geraten einen Cast zu verwenden um unsigned char Arrays zu versenden. Leider habe ich es nicht hinbekommen, deshalb meine Frage - ist das etwa falsch?

    egal ich werd es weiterversuchen

    Gruß Tupo13



  • Tupo13 schrieb:

    Ich will zum Beispiel dieses Array senden

    unsigned char sendbuf[5] = {0xff,0xff,0xff,0xff,0xff};
    
    bytesSent = send(connectSocket, (char*) sendbuf, 5, 0 );
    


  • Hallo,
    so in etwa wie das nachfolgende Beispiel solltest Du wohl Deine
    Datenübertragung ungefähr aufbauen, dann bekommst Du auch
    "uchar" über das Netz :

    union beispiel
    {
    unsigned char chrs1[4];
    char chrs2[4];
    } bspldaten;
    char buffer[4];
    
    bspldaten.chrs1 = Deine "unsigned char" Daten !!!
    memcpy( buffer, bspldaten.chrs2, sizeof(bspldaten.chrs2) );
    senddata = send( ConnectSocket, (char*)buffer, sizeof(buffer), 0 );
    

    Mußt Du natürlich Deinen Gegebenheiten noch anpassen und Du
    kannst das Vorstehende auch noch auf die Übertragung von z.B.
    "float" erweitern.

    MFG



  • LOL!



  • (Ich quote sowas lieber nicht)
    Wo hast Du denn das gelernt????



  • Hallo "J.K.",

    mache Dir bitte "mal einen Kopf" darüber, wie Du zwischen verschiedenen
    Architekturen/Betriebssystemen wie UNIX-Workstation(HP-UX), WinNT-PC,
    W2K-PC verschiedenste Datenformate (char, int, float, double) per Sockets
    hin und her schiebst und das zyklisch im ms Bereich, aus Erfahrung sage
    ich Dir man kommt auf die "wundervollsten" Ideen 😋 !!!

    MFG



  • ZZR-1100 schrieb:

    Hallo "J.K.",
    mache Dir bitte "mal einen Kopf" darüber, wie Du zwischen verschiedenen
    Architekturen/Betriebssystemen wie UNIX-Workstation(HP-UX), WinNT-PC,
    W2K-PC verschiedenste Datenformate (char, int, float, double) per Sockets
    hin und her schiebst und das zyklisch im ms Bereich, aus Erfahrung sage
    ich Dir man kommt auf die "wundervollsten" Ideen 😋 !!!

    Ich verstehe jetzt zwar nicht warum "ich" mir da einen "Kopf" machen soll, aber seis drum...
    PS: Dazu gibt es ja schliesslich "htonx" und "ntohx" Funktionen...



  • Ok vielen dank

    Eure Tipps haben einwandfrei funktioniert

    das mit union hat geklappt und das mit (char*) auch

    danke Tupo13



  • nochmals hallo,

    die Theorie für "htonx/ntohx" ist einfach, die Praxis zwischen z.B. UNIX-Systemen
    und WINDOWS-Systemen nicht. char, int, float, double, TCP/IP, Little-Endian und
    Big-Endian sind in ihrem gewünschten Zusammenspiel nicht zu unterschätzen !!!

    Schönen Abend


Anmelden zum Antworten