k-id | hello !
Voilà j'ai un p'tit soucis avec mon prog. Je dois receptionner des datagrammes UDP sur le port 162 (c'est des Traps SNMP) et j'utilise pour ça le p'tit Packet Recever ci dessous. Mais le pb, c'est que je ne reçoit que quelques octets et pas le datagramme complet. Comme on fait pour capturer la totalité de la trame qui arrive ??? Help me ?
Si vous connaissez d'autres moyens pour receptionner les traps SNMP en Visual C++, je suis preneur car je crois que je vais galerer avec cette solution . J'ai vu qu'il existait un truc qui s'appelle MSDN WinSNMP mais j'ai pas le moindre de bout de code ou tuto pour etudier çà
Code :
- #include<stdio.h>
- #include<winsock2.h>
- #pragma comment(lib,"ws2_32.lib" )
- void main()
- {
- WSADATA wsa;
- WSAStartup(MAKEWORD(2,0),&wsa);
- SOCKET sock;
- SOCKADDR_IN sin;
- printf("UDP Packet Recever\n\n" );
- int port,i;
- printf("Port : " );
- scanf("%i",&port);
- sin.sin_family=AF_INET;
- sin.sin_addr.s_addr=INADDR_ANY;
- sin.sin_port=htons(port);
- sock=socket(AF_INET,SOCK_DGRAM,0);
- bind(sock,(SOCKADDR*)&sin,sizeof(sin));
- unsigned char buffer[1500];
- int sinsize=sizeof(sin);
- int size;
- while(1)
- {
- memset(buffer,0,sizeof(buffer));
- size=recvfrom(sock,(char *) buffer,sizeof(buffer),0,(SOCKADDR*)&sin,&sinsize);
- printf("Size : %i\n",size);
- for (i=0;i<size;i++)
- {
- printf("%x ",buffer[i]);
- }
- printf("\n" );
- }
- }
|
Message édité par k-id le 03-06-2003 à 14:46:41
|