Главная страница
Навигация по странице:

  • FD_CLR() 39FD_ISSET() 39SA_RESTART60FD_SET() 39select() 38, 95FD_ZERO() 39send() 26fork()

  • Guide to Network Сетевое программирование от Биджа


    Скачать 1.34 Mb.
    НазваниеGuide to Network Сетевое программирование от Биджа
    Дата02.05.2019
    Размер1.34 Mb.
    Формат файлаpdf
    Имя файлаbgnet_A4_rus.pdf
    ТипGuide
    #75918
    страница13 из 13
    1   ...   5   6   7   8   9   10   11   12   13

    103


    Beej's Guide to Network Programming
    Описание*
    Это базовые структуры для всех системных вызовов и функций, работающих с интернет адресами. Для заполнения этих структур вы часто будете использовать
    getaddinfo() и затем по мере надобности читать их. В памяти struct sockaddr_in и struct sockaddr_in6 начинаются с одинаковой struct sockaddr, ивы можете спокойно приводить один тип к другому без какого- либо ущерба за исключением возможного конца света. Пошутим над концом света… если вселенная прекратит своё существование в то время когда вы приводите struct sockaddr_in* к struct sockaddr*, обещаю, это будет чистейшее совпадение, ивам заботиться об этом ненужно. Так что, помня об этом, знайте, что если функция говорит, что принимает struct sockaddr* вы спокойно и безопасно можете привести к этому типу ваши struct sockaddr_in*, struct sockaddr_in6* или struct sockadd_storage*. Структура struct sockaddr_in используется с IPv4 адресами (вроде “192.0.2.10”). Она содержит семейство адресов (AF_INET), порт в sin_port и IPv4 адрес в sin_addr. Кроме того весть поле sin_zero , которое по утверждению некоторых людей должно содержать нули. Другие ничего об этом не утверждают документация Linux вообще об этом ничего не упоминает) и установка его в ноль не кажется действительно необходимой. Так что, если вы согласны, обнулите её функцией
    memset(). Да и struct in_addr это таинственный зверь на разных системах. Иногда это сумасшедший union со всеми видами #define-ов и прочей чушью. Но вам нужно использовать только поле s_addr, поскольку многие системы реализуют только его. struct sockadd_in6 очень похожа на struct in6_addr , но используется для IPv6. struct sockaddr_storage передаётся вили когда вы пытаетесь написать код, независящий от версии IP, ивы не знаете каким будет новый адрес - IPv4 или IPv6. Структура struct sockaddr_storage достаточно велика, чтобы содержать оба типа, в отличие от оригинальной маленькой struct sockaddr. Пример IPv4: struct sockaddr_in ip4addr; int s;
    !
    ip4addr.sin_family = AF_INET; ip4addr.sin_port = htons(3490); inet_pton(AF_INET, "10.0.0.1", &ip4addr.sin_addr); s = socket(PF_INET, SOCK_STREAM, 0); bind(s, (struct sockaddr*)&ip4addr, sizeof ip4addr);
    !
    // IPv6: struct sockaddr_in6 ip6addr; int s;
    !
    ip6addr.sin6_family = AF_INET6; ip6addr.sin6_port = htons(4950); inet_pton(AF_INET6, "2001:db8:8714:3a90::12", &ip6addr.sin6_addr); s = socket(PF_INET6, SOCK_STREAM, 0); bind(s, (struct sockaddr*)&ip6addr, sizeof ip6addr); Смотри также, bind(), connect(), inet_aton(), inet_ntoa()!
    104

    Beej's Guide to Network Programming
    10. Дополнительные ссылки Вы добрались так далеко и теперь возопили о большем Где ещё можно узнать обо всём этом великолепии Книги Для старой школы актуальны осязаемые дешёвые бумажные книги. Вот некоторые из превосходных книг. Обычно я связан сочень популярными интернет книготорговцами, но их нынешняя система обслуживания потребителей несовместима с печатными документами. Так что, откатов у меня больше нет. И если вы сочувствуете моим устремлениям, пожертвуйте, пожалуйста,
    paypal
    на beej@beej.us. :-)
    Unix Network Programming, volumes 1-2 by W. Richard Stevens. Published by Prentice Hall.
    ISBNs for volumes 1-2: 0131411551 , 0130810819 .
    44 45
    Internetworking with TCP/IP, volumes I-III by Douglas E. Comer and David L. Stevens.
    Published by Prentice Hall. ISBNs for volumes I, II, and III: 0131876716 , 0130319961 ,
    46 47 0130320714 .
    48
    TCP/IP Illustrated, volumes 1-3 by W. Richard Stevens and Gary R. Wright. Published by
    Addison Wesley. ISBNs for volumes 1, 2, and 3 (and a 3-volume set): 0201633469 ,
    49 020163354X , 0201634953 , (0201776316 ).
    50 51 52
    TCP/IP Network Administration by Craig Hunt. Published by O'Reilly & Associates, Inc. ISBN
    0596002971 .
    53
    Advanced Programming in the UNIX Environment by W. Richard Stevens. Published by
    Addison Wesley. ISBN 0201433079 .
    54
    10.2.Web ссылки В Сети
    BSD Sockets: A Quick And Dirty Программирование Unix систем тоже)
    55
    The Unix Socket FAQ
    56
    Intro to TCP/IP
    57
    TCP/IP FAQ
    58
    The Winsock FAQ
    59
    105
    http://beej.us/guide/url/unixnet1 44
    http://beej.us/guide/url/unixnet2 45
    http://beej.us/guide/url/intertcp1 46
    http://beej.us/guide/url/intertcp2 47
    http://beej.us/guide/url/intertcp3 48
    http://beej.us/guide/url/tcpi1 49
    http://beej.us/guide/url/tcpi2 50
    http://beej.us/guide/url/tcpi3 51
    http://beej.us/guide/url/tcpi123 52
    http://beej.us/guide/url/tcpna
    53
    http://beej.us/guide/url/advunix
    54
    http://www.frostbytes.com/jimf/papers/sockets/sockets.html
    55
    http://www.developerweb.net/forum/forumdisplay.php?f=70 56
    http://pclt.cis.yale.edu/pclt/COMM/TCPIP.HTM
    57
    http://www.faqs.org/faqs/internet/tcp-­‐ip/tcp-­‐ip-­‐faq/part1/
    58
    http://tangentsoft.net/wskfaq/
    59

    Beej's Guide to Network И есть несколько серьёзных страниц в Википедии:
    Berkeley Sockets
    60
    Internet Protocol (IP)
    61
    Transmission Control Protocol (TCP)
    62
    User Datagram упаковка и распаковка данных) Все RFC - это настоящий отвал пустой породы Эти документы описывают назначенные номера, программные API и протоколы, используемые в Интернете. Я включил немного ссылок на них для вашего удовольствия. Так что хватайте бадью попкорна и надевайте вашу думательную шапку
    RFC 1
    - Первый RFC; он даёт понимание того, каким Интернет был, когда он родился и взгляд на то, как он возрос. (Понятно, что этот RFC полностью устарел)
    RFC 768 - The User Datagram Protocol (UDP)
    68
    RFC 791 - The Internet Protocol (IP)
    69
    RFC 793 - The Transmission Control Protocol (TCP)
    70
    RFC 854 - The Telnet Protocol
    71
    RFC 959 - File Transfer Protocol (FTP)
    72
    RFC 1350 - The Trivial File Transfer Protocol (TFTP)
    73
    RFC 1459 - Internet Relay Chat Protocol (IRC)
    74
    RFC 1918 - Address Allocation for Private Internets
    75
    RFC 2131 - Dynamic Host Configuration Protocol (DHCP)
    76
    RFC 2616 - Hypertext Transfer Protocol (HTTP)
    77
    106
    http://en.wikipedia.org/wiki/Berkeley_sockets
    60
    http://en.wikipedia.org/wiki/Internet_Protocol
    61
    http://en.wikipedia.org/wiki/Transmission_Control_Protocol
    62
    http://en.wikipedia.org/wiki/User_Datagram_Protocol
    63
    http://en.wikipedia.org/wiki/Client-­‐server
    64
    http://en.wikipedia.org/wiki/Serialization
    65
    http://www.rfc-­‐editor.org/
    66
    http://tools.ietf.org/html/rfc1 67
    http://tools.ietf.org/html/rfc768 68
    http://tools.ietf.org/html/rfc791 69
    http://tools.ietf.org/html/rfc793 70
    http://tools.ietf.org/html/rfc854 71
    http://tools.ietf.org/html/rfc959 72
    http://tools.ietf.org/html/rfc1350 73
    http://tools.ietf.org/html/rfc1459 74
    http://tools.ietf.org/html/rfc1918 75
    http://tools.ietf.org/html/rfc2131 76
    http://tools.ietf.org/html/rfc2616 77

    Beej's Guide to Network Programming
    RFC 2821 - Simple Mail Transfer Protocol (SMTP)
    78
    RFC 3330 - Special-Use IPv4 Addresses
    79
    RFC 3493 - Basic Socket Interface Extensions for IPv6 80
    RFC 3542 - Advanced Sockets Application Program Interface (API) for IPv6 81
    RFC 3849 - IPv6 Address Prefix Reserved for Documentation
    82
    RFC 3920 - Extensible Messaging and Presence Protocol (XMPP)
    83
    RFC 3977 —Network News Transfer Protocol (NNTP)
    84
    RFC 4193 —Unique Local IPv6 Unicast Addresses
    85
    RFC 4506 —External Data Representation Standard (XDR) Весть прекрасный онлайн инструмент для поиска и просмотра RFC .
    87
    107
    http://tools.ietf.org/html/rfc2821 78
    http://tools.ietf.org/html/rfc3330 79
    http://tools.ietf.org/html/rfc3493 80
    http://tools.ietf.org/html/rfc3542 81
    http://tools.ietf.org/html/rfc3849 82
    http://tools.ietf.org/html/rfc3920 83
    http://tools.ietf.org/html/rfc3977 84
    http://tools.ietf.org/html/rfc4193 85
    http://tools.ietf.org/html/rfc4506 86
    http://tools.ietf.org/rfc/
    87

    Beej's Guide to Network Предметный указатель

    accept()
    25, 66
    MSG_WAITALL
    93
    ntohl()
    84
    bind()
    22, 68
    ntohs()
    84
    close()
    28,
    72
    perror()
    90
    closesocket()
    2
    PF_INET
    17
    CreateProcess()
    3
    poll()
    91
    CreateThread()
    3
    read()
    5
    F_SETFL
    83
    recv()
    26, 93
    fcntl()
    83
    recvfrom()
    27, 93
    FD_CLR()
    39
    FD_ISSET()
    39
    SA_RESTART
    60
    FD_SET()
    39
    select()
    38, 95
    FD_ZERO()
    39
    send()
    26
    fork()
    3
    sendall()
    44
    sendto()
    27
    getaddrinfo()
    18, 73
    setsockopt()
    97
    gethostbyaddr()
    77
    shutdown()
    28, 101
    gethostbyname()
    77
    sigaction()
    32
    gethostname()
    29, 76
    SIGIO
    83
    getnameinfo()
    80
    SIGPIPE
    72
    getpeername()
    28, 81
    SIGURG
    93
    getprotobyname()
    102
    SO_BINDTODEVICE
    97
    getsockopt()
    97
    SO_BROADCAST
    97
    SO_RCVTIMEO
    64
    herror()
    78
    SO_REUSEADDR
    97
    hstrerror()
    78
    SO_SNDTIMEO
    64
    htonl()
    84
    SOCK_DGRAM
    5
    htons()
    84
    SOCK_RAW
    59
    SOCK_STREAM
    5
    INADDR_ANY
    17
    socket()
    21, 102
    INADDR_BROADCAST
    17
    SOL_SOCKET
    97
    inet_addr()
    15
    strerror()
    90
    inet_aton()
    15
    struct addrinfo
    13
    inet_ntoa()
    16
    struct hostent
    77
    inet_ntop()
    87
    struct in_addr
    103
    inet_pton()
    87
    struct pollfd
    91
    struct sockaddr
    1 03
    listen()
    24, 89
    struct sockaddr_in
    1 03
    struct timeval
    39
    MSG_DONTROUTE
    99
    MSG_DONTWAIT
    99
    write()
    5
    MSG_NOSIGNAL
    99
    WSACleanup()
    2
    MSG_OOB
    99
    WSAStartup()
    2
    MSG_PEEK
    93
    108
    1   ...   5   6   7   8   9   10   11   12   13


    написать администратору сайта