Daten via Socket versenden



  • Hallo Leute,

    ich will zyklisch einen string via Socket an einen bestimmten Port senden.

    Ich habe bereits mehrere Anleitungen zur Client-Server Programmierung gelesen,
    aber ich verstehe es einfach nicht.

    ich hoffe ihr könnt mir helfen.

    ich hab damit angefangen:

    int IDMySocket;
    struct sockaddr_in AdrMySock;
    
    char puffer[];
    int MsgLen;
    
    IDMySocket = socket(AF_INET, SOCK_STREAM, 0);
    AdrMySock.sin_family = AF_INET;
    AdrMySock.sin_port = "34567"; 
    
    bind(IDMySocket, &AdrMySock, sizeof(AdrMySock) );
    

    wie überprüfe ich jetzt, ob auf port 34567 jemand hört ?
    und wie sende ich dann eine datei an genau diesen Port. 😕

    Danke an alle, die mir weiterhelfen :p



  • Du musst mit connect eine Verbindung mit dem Server herstellen, dann kannst du mit send und recv Daten senden und empfangen.
    Der Server muss im listen - Modus sein und dann mit accept die Verbindung akzeptieren. Sieh dir dazu mal das: http://robsite.net/files/0000/0012/sockdoc.pdf



  • bind ist für server nicht für clients.
    Um was für ein Protokoll handelt es sich überhaupt?



  • Ich muss nochmal nachfragen, aber ich glaube ich soll die Daten via http schicken.

    Es war nirgends die Rede davon, dass ich mich vorher mit dem Server verbinden soll, deswegen habe ich dazu auch keine Infos bekommen.
    Es hieß einfach nur die Daten über den port schicken, die anderen holen sich den an dem Port ab ...

    Ich will den aber nochmal ne Email schreiben, weil mich das total verwirrt ...



  • Hallo

    Wenn das so ist, dann bist du ein Client und kein Server. Dann solltest du dir in der Doku von Bitmapper den Teil des Clients nochmal anschauen. Bzw bei Beispiel 4-5 wird dir sogar gezeigt wie man einen HTTP-GET-Request versendet.

    Nach dem du dann weist wie man Nachrichten Verschickst und Empfängt, solltest du dir mal das HTTP-Protokoll anschauen, hört sich zumindest danach an, das du deine Datei auf einen Webserver abladen sollst.

    MFG Marco



  • Ja, ich bin auf jeden Fall der Client, ich soll die Daten ja senden 😉

    Ich bin jetzt so weit gekommen:

    int IDMySocket;
    struct sockaddr_in AdrMySock;
    
    int MsgLen = strlen(stringMsg);
    
    IDMySocket = socket(AF_INET, SOCK_STREAM, 0);
    AdrMySock.sin_family = AF_INET;
    AdrMySock.sin_port = "34567";
    
    if ( ( connect(IDMySocket, &AdrMySock, sizeof(AdrMySock)); ) != 0 )
                    // fehler beim connecten
    int res = Send(IDServerSocket, stringMsg, MsgLen, 0);
    
    if ( res == -1)
         // fehler bei send()
    
    if ( MsgLen != res )
         // nicht alles übertragen --> nochmal übertragen
    else
         Close(IDServerSocket);
    

    wegen dem http hab ich nochmal ne Mail geschrieben und warte noch auf Antwort 😉

    Bis jetzt schonmal vielen Dank



  • falls du noch fragen hast oder welche auftreten schau doch mal hier:
    https://www.c-plusplus.net/forum/169861-full

    dort gibt es eigentlich eine wie ich finde sehr anschauliche und gut nachvollziebare anleitung (tutorial) zu diesem thema...

    so wie ich gesehen hab werden dort die dinge erklärt mit denen du dich schwer tust...

    hoff ich konnte helfen 🙂
    lg



  • Hi,

    danke für den Tipp, die Anleitung hab ich auch schon entdeckt 👍 👍

    Hab jetzt ein Update vom Kollegen erhalten.
    ich soll den Server darstellen ...



  • Hallo

    Und welches Protokoll ist die Ausgangslage?

    MFG Marco


Log in to reply