Új hozzászólás Aktív témák

  • Jester01

    veterán

    válasz emitter #1447 üzenetére

    megint nem gondolkoztam mielőtt írtam: csak konvertálnom kellett (socklen_t*)-vel

    Rossz ötlet volt. A változó típusát kell átállítani, nem a pointert castolni. Pl. ha a socklen_t 64 bites és te egy int* pointert adsz be átcastolva, akkor szépen felülíródik az utána lévõ memóriaterület elsõ 4 byte-ja.

    nagy nehezen tájöttem a hibára:
    if( sockfd = socket(AF_INET, SOCK_STREAM, 0) == -1){...
    a sockfd-s kifejezést még külön be kellett zárójelezni... de hogy miért


    Operátor precedencia. Különben miért volt nehéz? A gcc warningot dob érte...
    server.cpp:36: warning: suggest parentheses around assignment used as truth value

    Ugye az accept-nél is zárójeleztél? Én különben is kerülöm az értékadás+feltétel kombinációt, jelen esetben abszolút semmit nem nyersz vele. Ha simán azt írod, hogy
    newfd = accept(sockfd, (struct sockaddr *)&client_addr, &sin_size);
    if (newfd == -1){

    az sokkal olvashatób és még a precedencia dologba sem szaladsz bele.

    Ugye a szerver a 9999-es porton listenel? Mert a kód amit kitettél a netre az tojik a parancssorra és mindenképp a 3490-es porton figyel. (netstat -l)

    MOD: és amúgy mûködik is:

    hcs:/tmp> ./server

    Kliens ciminfoja:
    ip: 16777343
    port: 33205
    Program vege. Nyomj egy bill-t!x

    hcs:~> nc 127.0.0.1 3490
    Hello world!

    [Szerkesztve]

    Jester

Új hozzászólás Aktív témák