1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
envoi_dappel()
{
//appel du poste
msg_send();
while(1)
{
FD_ZERO (&fds);
FD_SET (so, &fds);
FD_SET (so, &fds);
if (select (fdmax, &fds, NULL, NULL, NULL) < 0)
{
printf ("*** connection_listen : select\n");
}
if (FD_ISSET (so, &fds))
{
fprintf (stderr, "incoming data !\n");
res = recvfrom(so, (void *)thread_rx_buf, 1000, 0, (struct sockaddr *)&thread_rx_Rx, &thread_rx_Rxlen);
//traitement du paquet, etablissement de l'appel
...
}
//appel etabli, ecoute des sockets rtp et rtcp pour la reception des donnees
//ecoute et traitement des donnees
//est ce que je dois utiliser encore une fois le select ??
recvfrom(socket_rtp);//non blocant
recvfrom(socket_rtcp);//non blocant
//fin de la boucle while, on retourne au debut pour voir si on a recu un signal de fin d'appel sur la premiere socket. Sinon, on retroune ecouter les nouveaux paquets de donnees.
//tant qu'on a pas fini l'appel, on reste dans la boucle while...
}
...
} |
Partager