сниффер можно установить только на реальный интерфейс...так что gethostname(name, MAX_HOSTNAME_LAN); не прокатит
> Не получается наначать работу с RAW socket. После установки > свойств сокета функцией WSAIoctl возвращается ошибка > 10022.(Типа не правельны какие-то параметры.) > > void RecvPacket() > { > SOCKET sock; > WSADATA wsd; > char RecvBuf[65535] = {0}; > DWORD dwBytesRet; > unsigned int optval = 1; > > WSAStartup(MAKEWORD(2,1),&wsd); > > sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP); > > char FAR name[MAX_HOSTNAME_LAN]; > gethostname(name, MAX_HOSTNAME_LAN); > > struct hostent FAR * pHostent; > pHostent = (struct hostent * )malloc(sizeof(struct > hostent)); > pHostent = gethostbyname(name); > > SOCKADDR_IN sa; > sa.sin_family = AF_INET; > sa.sin_port = htons(600); > > memcpy(&sa.sin_addr.S_un.S_addr, > pHostent->h_addr_list[0], pHostent->h_length); > > int err=bind(sock, (SOCKADDR *)&sa, > sizeof(sa)); > if(err==0){MessageBox(0,"Bind OK","",0);}; > ZeroMemory(&dwBytesRet,sizeof(dwBytesRet)); > > err=WSAIoctl(sock,SIO_RCVALL,&optval,sizeof(optval),NUL > L,NULL,&dwBytesRet, NULL, NULL); > if(err==0){MessageBox(0,"","",0);}; > err=WSAGetLastError(); > > while (1) > { > memset(RecvBuf, 0, sizeof(RecvBuf)); > > recv(sock, RecvBuf, sizeof(RecvBuf), 0); > > }
|