Winsock problem

0

Kod:

int main()
{ 
    sockaddr_in adr_serwer, adr_client;
    int serwer_fd, client_fd, yes = 1;
    unsigned int sinsize;
    if((serwer_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
        cout << "\n\aSOCKET";
        return -1;
    }
    else
        cout << " SOCK OK";
    if((setsockopt(serwer_fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int))) == -1)
    {
        cout << "\n\aSETSOCKOPT";
        return -1;
    }
    else
        cout << " SETSOCKOPT OK";
    adr_serwer.sin_family = AF_INET;
    adr_serwer.sin_addr.s_addr = INADDR_ANY;
    adr_serwer.sin_port = htons(7801);
    memset(&(adr_serwer.sin_zero ), '\0', 8 );
    if((bind(serwer_fd, (sockaddr*)&adr_serwer, sizeof(sockaddr))) == -1)
    {
        cout << "\n\aBIND";
        return -1;
    }
    else
        cout << " BIND OK";
//tutaj 
    cout << "TO JUŻ SIĘ NIE WYŚWIETLA";
    if(listen(serwer_fd, 1) == -1)
    {
        cout << "\nLISTEN";
        return -1;
    }
    return 0;
}

Wynik: SOCK OK SETSOCKOPT OK BIND OK

Pisze na linuksie. Dlaczego program zatrzymuje się w miejscu //tutaj? "TO JUŻ SIĘ NIE WYŚWIETLA" nie zostaje wyświetlone. Proszę o pomoc.

0

Zapewne przez to, że listen wciąż trwa. Strumienie są buforowane, więc to co wsadzisz w cout nie jest wyświetlane od razu. Zobacz to: cout << "TO JUŻ SIĘ NIE WYŚWIETLA" << flush;.

0

Faktycznie, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1