Linux Socket Server



  • Hi, also ich habe ein problem hinsichtlich eines kleinen socket programms, server und client sind da, nun will ich mit dem client auf den server connecten (logisch), wenn dies geschehen ist erhaelt der client vom server eine aufforderung in dem er seinen namen eingeben soll, soweit so gut das funktioniert auch. mein problem ist es jetzt das der client dem anwender keine moeglichkeit gibt zu antworten weil er einfach drueber springt, also der text "bitte namen eingeben" kommt recv() is alles drin, und das witzige, wenn ich mit telnet connecte klappt das wunderbar, man kann seinen namen eingeben und fertig. 😕
    -> linux



  • Server.cpp

    memset(sMessage, 0, sizeof(sMessage));
    memset(rMessage, 0, sizeof(rMessage));
    /* ... */
    s = socket(AF_INET, SOCK_STREAM, 0);
    /* bind(); listen(); */
    
    /* Endlosschleife */
    a = accept(s, ( struct sockaddr* )&srv, reinterpret_cast<socklen_t*>(&size);
    strcpy(sMessage, "bitte namen eingeben: ");
    send(a, sMessage, strlen( sMessage ), 0);
    r = recv(a, rMessage, sizeof( rMessage ), 0);
    std::printf("ihr name ist also %s", rMessage);
    


  • ohne Programmcode kann man dein Problem schlecht beheben. Vielleicht ist der Tastaturbuffer ja noch voll?

    naja, zeig mal was Code (aber bitte nicht alles, sondern nur so viel Code, dass dein Problem auftritt und man es begutachten kann :))

    ups, da war ich zu spät. Aber von deinem Server Code kann man nicht wirklich ablesen, wo die Probleme beim Client sind. Was gibt denn der Server für den Namen aus?



  • eine ganz normale anfrage, recv() muesste doch eigentlich stoppen solange nix eingegeben wird oder ? aehnlich getch();

    Was gibt denn der Server für den Namen aus?

    ohman ja, goa nix -> weil es keine moeglichkeit gibt den namen einzugeben



  • Client.cpp

    /* .. */
    s = socket(AF_INET, SOCK_STREAM, 0);
    c = connect(s, ( struct sockaddr* ),&claddr, sizeof(claddr));
    //send(s, sMessage, strlen( sMessage ), 0);
    r = recv(s, rMessage, sizeof( rMessage ), 0);
    rMessage[r] = '\0';
    std::printf("%s", rMessage);
    

Anmelden zum Antworten