Je suis le débutant dans la programmation socket. Je veux recevoir des paquets udp en continu depuis le port. Pour cela, j'ai créé socket et en utilisant les appels bind et recv que j'ai fait avec mon programme. Dans un tampon, je stocke les paquets udp. Comment recevoir paquet par paquet. Comment mettre la condition pour un intervalle de temps particulier? Merci d'avance.udp winsock programmation
static int recvData = 1;
sockID = socket(AF_INET, SOCK_DGRAM, 0);
if(sockID < 0)
{
printf("Socket creation error\n");
WSACleanup();
}
else
{
printf("Socket Created\n");
}
fepAddr.sin_family = AF_INET;
fepAddr.sin_port = htons(inputData.portNo);
fepAddr.sin_addr.s_addr = inet_addr(inputData.destIPAddr);
if (bind(sockID, (struct sockaddr *)&fepAddr, sizeof(fepAddr)) == SOCKET_ERROR)
{
printf("bind() failed: %ld.\n", WSAGetLastError());
closesocket(sockID);
return 0;
}
else
{
printf("bind() is OK!\n");
}
memset(udpBuf,sizeof(udpBuf),0);
while (recvData)
{
printf("receiving data\n");
recvResult = recvfrom(sockID, udpBuf, sizeof(udpBuf), 0,(struct sockaddr *)&fepAddr, &sock_len);
fprintf(udp, "%s", udpBuf);
//fwrite(udpBuf, sizeof(udpBuf), 1, udp);
recvData-- ;
}
exit:
if(udp)
{
fclose(udp);
udp = 0;
}
//shutdown socket
closesocket(sockID);
fclose(udp);
merci pour votre réponse ...... – ulaga
je besoin de plus d'aide ..... J'ai créé prise à l'aide raw socket (PF_PACKET, SOCK_RAW, ETH_P_IP) .... mais il donne un argument invalide ... comment créer un socket brut pour recevoir des paquets udp du port ?? – ulaga
SOCK_RAW n'est pas disponible dans la famille PF_PACKET. Il est uniquement disponible dans les familles AF_INET et AF_INET6. La liaison –