C++, pthread, socket AIX probléma
2002-12-16T16:08:30+01:00
2002-12-16T20:52:12+01:00
2022-07-27T21:17:03+02:00
  • A sin_addr mezövel minden rendben van. Azért variáltam vele egy kicsit, hátha... De nem.

    Term. 1024 felett próbálkozok.

    De még1* mondom:
    A progi müködik! Amíg nem linkeltetem hozzá a pthread libet. Tehát a forráshoz hozzá sem nyúlok, csak egy -lpthread kapcsolót adok a g++ -nak és máris nem tud bindelni.

    A pontos hibaüzenet mégegyszer, ha valaki tudna segíteni:
    Can't assign requested address
    Mutasd a teljes hozzászólást!
  • Akkor nyilván vagy az a baj, hogy
    - nem INADDR_ANY van a sin_addr mezőben
    - événytelen IP cím van a sin_addr mezőben (pl. figyelj a byte-sorrendre! lásd htonl() függvény!)
    - az AIX nem szereti az INADDR_ANY-t a bind()-nél, és mindig explicit meg kell adni neki egy konkrét interfészt (bár ez csúnya lenne tőle, de hát ki tudja)

    Btw. 1024 alatti porthoz csak root bindelhet! Siman nyúzer nem.
    Mutasd a teljes hozzászólást!
  • errnmo értéke: 68
    hozzátartozó hibaüzenet: Can't assign requested address

    Az emltett dolgok nem fordulhatnak elö:
    a port tuti szabad
    a müvelet jól van végrehajtva, mivel -lpthread kapcsolo nélkül fordítva müködik is rendesen, és meg is kapja a portot
    a strukturak meretevel sincs gond (lsd elozo)
    Mutasd a teljes hozzászólást!
  • 1. mi az errno értéke, azaz milyen hibát kapsz ?
    2. biztos szabad a port amihez bindelni akarsz ?
    3. nem lehet, hogy AIX-on mindig meg kell adni az interfészt is (IP cím), nem csak a portot?
    (4. egyáltalán TCP/IP porthoz akarsz bindelni, vagy esetleg Unix socketről, vagy valami másról van szó?)
    +1. struktúrák mérete biztos stimmel (pl. nem biztos, hogy ua. a socket_addr mérete Linux és AIX alatt)

    Egyébként mi a hívások sorrendje? socket()->bind()->listen()/connect()?
    Mutasd a teljes hozzászólást!
  • Van egy progim, aminek a tartalma a címben olvasható, azaz:
    C++ -ban íródott, pthread-eket használ, socketeket kezel, és AIX-on szeretném futtatni.

    A probléma:
    A progi hibátlanul fut Linux alatt.
    A progi hibátlanul fordul AIX alatt.
    Viszont a socket nem tud bindelni.

    Ráadásul amíg nem linkelem össze a pthread librarival (persze kihagyom belöle a megfelelö részeket), addig minden oké. Söt: ha abszolut nem használom a threadeket, csak megadom a fordítónak, hogy linkeljen pthread librarival, már akkor sem megy.

    Na erre varjatok gombot.
    Már tapasztaltam hasonlót, de nem emléxem, hogy megoldódott-e, és hogy hogyan.

    Minden ötletet szívesen fogadok.

    (Amúgy ezt hova kellene besorolnom? Nincs programozás-gyakorlat besorolás.)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd