(Rund um die...) sockets-sent/recv



  • Hallo,
    Client macht ein File auf, und schickt es rüber:

    char* c = new char[4];//4 Bytes
        StreamReader* sr;
        try {
            sr = new StreamReader(S"C:\\hallo.txt");
            while (sr->Peek() >= 0) {
                *c = sr->Read();
                cout << *c;
                c++;
            }
            sentDataBytes = send(mySocket, c, 4, 0);
    

    in "hallo.txt" steht: abcd
    Server bekommt sie:

    char recvData[4];
    recv(acceptSocket, recvData, sizeof(recvData), 0);
    for(int r=0; r<sizeof(recvData); r++) {
       cout << recvData[r];
    }
    

    warum kommen die 4 Buchstaben kommisch an?? der Client schickt sie richtig, aber der Empfänger zeigt kommische Zeichen.
    PS: ich glaube, es hat zu tun mit Network Byte Order, oder? aber da gibt's htons und htonl, also nur aud short und long, außerdem braucht der "send" ein char*

    MFG,
    mnab



  • char recvData[4];
    recv(acceptSocket, recvData, sizeof(recvData), 0);
    for(int r=0; r<sizeof(recvData); r++) {
       cout << recvData[r];
    }
    

    bis du dir sicher das du von accept socket lesen kannst... normalerweise hat man doch ein socket was verbinungen akzeptiert und dann neue sockets liefert und nur über die kann man effektiv daten schicken/epfange aber nicht über das accept socket...



  • afaik ist socket-kommunikation mit standart c++ nicht möglich, gehört wohl eher nach winapi oder konsolenforum.



  • Original erstellt von japro:
    bis du dir sicher das du von accept socket lesen kannst... normalerweise hat man doch ein socket was verbinungen akzeptiert und dann neue sockets liefert und nur über die kann man effektiv daten schicken/epfange aber nicht über das accept socket...

    also acceptSocket ist das neue Socket, was mir die Methode "accept(listenSocket,...)" zurückliefert.



  • thread verschoben ins rund um die programmierung forum. Rund um die Programmierung


Log in to reply