Diff for ''

Revision 19
Author:
black
Time:
2022-10-16 02:31
Revision 1
Time:
2024-06-13 22:30
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
{| style="width: 20em; float: right; font-size: 95%; margin: 0 0 1em 1em; border: 1px solid #aaa; border-collapse: collapse; clear: right;"
|-
| style="padding: 0.5em; background: #cde; font-size: larger; border: 1px solid black;" | '''[[:Category:Předměty|{{{1}}}]]'''
|-
|
{| style="margin-left: 1em;"
|- style="vertical-align: top;"
|Kód předmětu:
|style="padding-left: 1em;" | [http://is.cuni.cz/studium/predmety/index.php?do=predmet&kod=N{{{3}}} N{{{3}}}]
|- style="vertical-align: top;"
|Přednáší:
|style="padding-left: 1em;" | '''[[{{{2}}}]]'''
|}
|}
# IPv6 sockety a kompatibilita s IPv4
Line 16: Line 3:
<{ForumPost(poster="marxin", timestamp=2010-02-05 16:30:24)}>
Ahoj,
   v průběhu práce na zápočtovém programu jsem narazil na problém přenositelnosti socketu na IPv6, kde vznikla nové struktura sockaddr_in6 a vzniklo jakési zapouzdření sockaddr_storage, které má v sobě uchovávat obě struktury.
  
Chtěl jsem se optat, jak se nechá nejlépe udělat poslouchání socketu na jak IPv4, tak IPv6, nebyl jsem schopen vygooglit nějaký schopný příklad a ve slidech také není mnoho.
  
Díky,
Martin
<{/ForumPost}>
Line 17: Line 13:
<{ForumPost(poster="Andrej", timestamp=2011-01-15 12:12:12)}>
getaddrinfo(), AI_V4MAPPED a je to. (Detaily jsou v manuálové stránce.) Pak pro IPv4 i IPv6 stačí pouze IPv6 struktury adres.
<{/ForumPost}>
Line 18: Line 17:
<{ForumPost(poster="petrbel", timestamp=2014-01-22 13:19:19)}>
můžeš mrknout na tenhle příklad [http://mff.devnull.cz/pvu/src/resolving/getaddrinfo.c](http://mff.devnull.cz/pvu/src/resolving/getaddrinfo.c) - socket() i bind() se volají v tom cyklu (je potřeba kontrolovat, jestli se bind() povedl a když ne, tak zavřít socket. Dále je potřeba kouknout po skončení cyklu, jestli jsme vůbec něco otevřeli).
  
Upozornění - tenhle příklad otevře jeden (libovolný) port na nějaké adrese (podle toho, co bude na daném systému volné). Nebude tedy možné přijímat ipv4 i ipv6 (na to je potřeba použít AF_INET6 a socketu nastavit přes setsockopt() aby bral i ipv4) - to ale není podle normy (ale všude to funguje)
<{/ForumPost}>
Line 19: Line 23:

[[Category:Předměty]]