Windows SOCKET WSASocket int af int type int

  • Slides: 25
Download presentation

Сокеты Windows Сокет создается одной из двух функций: SOCKET WSASocket { int af, int

Сокеты Windows Сокет создается одной из двух функций: SOCKET WSASocket { int af, int type, int protocol, LPWSAPROTOCOL_INFO lp. Protocol. Info, GROUP g, DWORD dw. Flags }; SOCKET socket { int af, int type, int protocol };

Соответствие параметров для некоторых типов сокетов Протокол Internet Protocol (IP) Семейство адресов AF_INET Тип

Соответствие параметров для некоторых типов сокетов Протокол Internet Protocol (IP) Семейство адресов AF_INET Тип сокета Параметр типа TCP UDP Простые сокеты SOCK_STREAM SOCK_DGRAM SOCK_RAW Net. BIOS AF_NETBIOS Последовательные пакеты Дейтаграммы Apple. Talk AF_APPLETALK MSAFD Apple. Talk (ADSP) (псевдопоток) MSAFD Apple. Talk (PAP) MSAFD Apple. Talk (RTMP) MSAFD Apple. Talk (ZIP) Параметр протокола IPPROTO_IP IPPROTO_UDP IPPROTO_RAW IPPROTO_ICMP SOCK_SEQPACKET Номер LAN SOCK_DGRAM Номер LAN SOCK_RDM SOCK_STREAM SOCK_RDM SOCK_DGRAM ATPROTO_ADSP ATPROTO_PAP DDPPROTO_RTMP DDPPROTO_ZIP

IP-адресация � IP-адрес состоит из 32 бит в версии 4 (IPv 4). � Адрес

IP-адресация � IP-адрес состоит из 32 бит в версии 4 (IPv 4). � Адрес и номер порта службы задают в структуре SOCKADDR_IN: struct sockaddr_in { short u_short struct in_addr char }; sin_family; sin_port; sin_addr; sin_zero[8];

Функции для преобразования многобайтных чисел HBO в NBO � u_long htonl(u_long hostlong); � int

Функции для преобразования многобайтных чисел HBO в NBO � u_long htonl(u_long hostlong); � int WSAHtonl( SOCKET s, u_long hostlong, u_long FAR * lpnetlong ); � u_short htons(u_short hostshort); � int WSAHtons( SOCKET s, u_short hostshort, u_short FAR * lpnetshort );

Функции для преобразования многобайтных чисел NBO в HBO � u_long ntohl(u_long netlong); � int

Функции для преобразования многобайтных чисел NBO в HBO � u_long ntohl(u_long netlong); � int WSANtohl( SOCKET s, u_long netlong, u_long FAR * lphostlong ); � u_short ntohs(u_short netshort); � int WSANtohs( SOCKET s, u_short netshort, u_short FAR * lphostshort );

Создание IP-сокета � s = socket(AF_INET, SOCK_DGRAM, Ø); //UDP � s = socket(AF_INET, SOCK_RAW,

Создание IP-сокета � s = socket(AF_INET, SOCK_DGRAM, Ø); //UDP � s = socket(AF_INET, SOCK_RAW, Ø); //IP � s = WSASocket(AF_INET, SOCK_STREAM, Ø, NULL, Ø, WSA_FLAG_OVERLAPPED); //TCP

Функция WSAAddress. To. String INT WSAAddress. To. String( LPSOCKADDR lpsa. Address, DWORD dw. Address.

Функция WSAAddress. To. String INT WSAAddress. To. String( LPSOCKADDR lpsa. Address, DWORD dw. Address. Length, LPWSAPROTOCOL_INFO lp. Protocol. Info, OUT LPTSTR lpsz. Address. String, IN OUT LPDWORD lpdw. Address. String. Length ); � lpsa. Address соответствует структуре SOCKADDR, содержащей адрес, который надо преобразовать в строку � dw. Address. Length задает размер структуры � параметр lp. Protocol. Info представляет поставщика протокола � lpsz. Address. String — буфер, где сохраняется удобная для чтения адресная строка � lpdw. Address. String. Length — это размер адресной строки

Функция WSAString. To. Address INT WSAString. To. Address( LPTSTR Address. String, INT Address. Family,

Функция WSAString. To. Address INT WSAString. To. Address( LPTSTR Address. String, INT Address. Family, LPWSAPROTOCOL_INFO lp. Protocol. Info, LPSOCKADDR lp. Address, LPINT lp. Address. Length ); � Address. String передается адресная строка, для IP — XXX: Y � Address. Family представляет тип семейства адресов для параметра Address. String � lp. Protocol. Info представляет поставщика протокола � lp. Address хранится структура SOCKADDR � lp. Address. Length представляет размер результирующей структуры SOCKADDR