Az 'inet_ntop' sem fenékig tejfel...

Például azért nem, mert Windows XP-ben nincs ilyen. Na mindegy, gondoltam, gyorsan összecsapok valamit, és Linuxon tesztelem: összehasonlítom a saját verziót a gyárival.

Jó stréber módjára tesztprogram készítésével kezdtem, abban rögtön egy inet_pton függvénnyel, a főprogramban valami ilyesmi:


    Test1 (AF_INET,  "127.1");
    Test1 (AF_INET,  "127.0.0.1");
    Test1 (AF_INET6, "1234:5678::abcd:ef01");

Hát természetesen az inet_pton (AF_INET, "127.1") nem működik. Manuál is írja: csak négy decimális számot fogad el. inet_aton("127.1") persze működik. Csak elavult. Helyette az inet_pton ajánlatos. Remélem, édesanyjuk nem csuklik ilyenkor.

Szerk: Windows-ban is van egy kis gond az inet_aton-nal, mégpedig az, hogy nincs; inet_addr-ral kell mesterkedni helyette...

Hozzászólások

Az inet_ntop-nál a következő dolgokra kell figyelni:
* 'uint16_t[8]'-nak érdemes tekinteni a címet, de a byte-order miatt ntohs kell 8x
* ebben a nyolcban meg kell keresni a leghosszabb 'nulla-sorozatot' (ha van egyáltalán, akkor lehet az elején, végén, közepén; lehet az egész csupa nulla; lehet hogy több egyforma hosszú nulla-sorozat van, ekkor válasszuk mondjuk az elsőt), és azt rövídítsük '::' jellel, pl ::1 vagy ffee::a0b:c0d
* egyes címeket IP4-kompatibilisen kell szokás kiírni: ::127.0.0.1 vagy ::ffff:8.8.4.4

Megkerdezhetem hogy miert szeretned a 127.1 format hasznalni? Eddig nem latam sehol sem hasznalva.

Amit nem lehet megirni assemblyben, azt nem lehet megirni.

Kívánságod máris teljesült;)
mingw-vel is fordítok linuxban (32 és 64 bit). Meg borland bc452-vel Windows-ban (16-bit), és bcc55-tel szintén Windows-ban (32-bit). Ha ezzekkel mind fordul, és a progi működik WindowsXP-ben, akkor elégedett vagyok.
Talán a Win16-os verziót lassan le lehetne építeni...

Note to self:

DISPLAY=[ip:v6:addr]:0

Ja és a getservbyname("telnet","tcp") helyett jó lesz az, hogy '23'