Winsock (для UNIX, Windows- и -NT) - часть 16
DWORD WINAPI IcmpSendEcho(
HANDLE IcmpHandle,
/* дескриптор, полученный в результате запроса IcmpCreateFile */
u_long DestAddress,
/* IP адрес точки зондирования */
LPVOID RequestData,
/* указатель на буфер, где лежат данные, подлежащие посылке */
WORD RequestSize,
/* длина этого буфера */
LPIPINFO RequestOptns,
/* указатель на структуру ICMP-опций */
LPVOID ReplyBuffer,
/* указатель на буфер для приема пакета-отклика */
DWORD ReplySize,
/* размер буфера для пакета-отклика */
DWORD Timeout
/* время ожидания отклика в миллисекундах */
);
struct icmp_echo_reply {
/* Структура ICMP-отклика */
u_long Address;
/* адрес отправителя */
u_long Status;
/* код IP-статуса */
u_long RTTime;
/* RTT в миллисекундах */
u_short DataSize;
/* длина пакета-отклика */
u_short Reserved;
/* зарезервировано на будущее */
void FAR *Data;
/* буфер отклика */
struct ip_option_information Options;
/* опции отклика */
}; ICMPECHO, *PICMPECHO, FAR *LPICMPECHO;
struct ip_option_information {
/* Структура опций протокола ICMP */
u_char TTL;
/* Time To Live (используется процедурой traceroute) */
u_char Tos;
/* Type Of Service (тип сервиса; обычно 0) */
u_char Flags;
/* Флаги IP-заголовка (обычно 0) */
u_char OptionsSize;
/* Размер буфера опций (обычно 0, max=40) */
u_char FAR *OptionsData;
/* Буфер опций */
} IPINFO, *PIPINFO, FAR *LPIPINFO;
Приложение может использовать WSAEnumProtocols для определения того, какой транспортный протокол (стек протоколов) поддерживается, и попутно можно получить дополнительную информацию, которая содержится в структуре WSAPROTOCOL_INFO.
В то время как в WinSock 1.1 имеется только одно семейство адресов AF_INET, включающее в себя ограниченное число известных типов соединителей и идентификаторов протоколов, в WinSock 2 это ограничение снято. Информация по WinSock 2 доступна по адресу:
www.stardust.com/winsock/ws_specs.htm
В настоящее время WinSock допускает совмещение по времени нескольких операций ввода/вывода. Такого рода операции возможны только для соединителей, созданных оператором WSASocket с флагом WSA_FLAG_OVERLAPPED=1 (Win32).