-
IT café
Ú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
● olvasd el a téma összefoglalót!