mierne offtopic, ale mozno niekto poradi... napisal som klienta, ktory paralelne posiela http dopyty. Je to napisane s pouzitim neblokujucich soketov a funkcie select(). (klasicky multiplexing - ale pouziva sa aj neblokujuci connect()). No a problem je v tom, ze: cele to robi napriklad 32 dopytov sucasne. Dopyty sa robia vzdy na jeden konkretny host. Dopytov je celkom cca. 20 tis. No a po chvilke sa mi zacne connect() vracat s -1 a errno nie je EINPROGRESS ako by clovek cakal ale napriklad EHOSTUNREACH ... mrkol som man errno a taketo nieco by to ani vratit nemalo. STretol sa s tym uz niekedy niekto?
Mozna je to jen pruvodni jev pri vycerpanych file deskriptorech... - kouknete na ulimit.
tak na toto tam mam niekolko assertov, vsetko poctivo zatvaram (close())a jobov mam relativne malo. ono to (ne)funguje tak, ze sa to rozbehne, bezi, potom to cca. 30 x spadne na tej chybe pri volani connect() a potom bezi dalej ...
Nemalo by byt v tom teste na velkost bufferu na konci <= ??? Nemoze nastat ze sa velkost bude rovnat?
V případě, že buffer je menší než nejmenší možná velikost ICMP paketu typu 11 kódu 0, tak chci vrátit false. V opačném případě (tedy i v případě rovnosti) zkontroluji, jestli paket oznamuje zahození mojí ECHO žádosti. Takže = tam být nemá.
Kdyby tam bylo rovnítko, tak by v případě, že by ICMP žádost neměla své tělo, vracela funkce false.