Dgedit
Сообщений: 131
Оценки: 0
Присоединился: 2007-02-04 15:07:37.163333
|
Задался тут недавно мыслью о протоколах ICMP и ARP. Кто именно на компе(ОС Windows XP) принимает сообщения по этим протоколам. Ведь для этих протоколов портов нет. Если можно распишите порядок обработки сообщений по этим протоколам, т.е. сетевая карта принимает пакет и куда он дальше передается на обработку. И также не понятно: а если я создам сокет для работы с протоколом ICMP и вызову на нем recvfrom - получу ли я входящее сообщение ICMP, например, пинг. У меня почему-то не получилось это, при попытке чтения из сокета возвращается -1. WSAGetLastError возвращает номер ошибки 10022. Вот код: s = socket( AF_INET, SOCK_RAW, IPPROTO_ICMP ); if (s == INVALID_SOCKET){ printf("Error at socket()\n"); getch(); WSACleanup(); return -1; } int iLen = sizeof(peer); while(!kbhit()) { dwResult = recvfrom(s, buff, BUFF_SIZE, 0, (sockaddr*)&peer, &iLen); if (dwResult == SOCKET_ERROR) { int err = WSAGetLastError(); printf("Error of reading data from socket…\n"); } }
|