Bonjour à tous,
Voilà, sous linux je dispose d'une programme permettant de lire en temps réel des fichier .ts (transport stream) sur une sortie vidéo. Pour l'instant mon programme ne lit que des fichiers sur le disque.
Je souhaiterais qu'il puisse lire les donnees non pas depuis un fichier .ts mais a partir d'un port sur l'ordinateur (les donnees sont envoyees par le réseau). Pour cela j'utilise un socket, et j'ai quelques soucis avec...
Mon problème est que la fonction "bind" de mon socket renvoit -1, signifiant que le bind n'a pas fonctionné correctement.
Voici le code de la fonction responsable de la creation (+bind) de la socket :
J'ai déjà regardé les tutos sur les sockets, mais je ne suis pas un pro et c'est la première fois que j'en implémente. Si quelqu'un a une idée ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 int createSocketTSReader ( void ) { printf ( "creation du socket \n\r" ) ; // creation d'un socket int sock = socket(PF_INET, SOCK_DGRAM, 0); if (sock < 0) { printf ( "Erreur a la creation du socket %d... \n\r", sock ) ; return -1 ; } // informations sur l'hote distant struct sockaddr_in dest = { AF_INET } ; // memset ( &dest, 0, sizeof ( struct sockaddr_in ) ) ; // dest.sin_family = AF_INET ; // dest.sin_addr.s_addr = inet_addr ( "127.0.0.1" ) ; dest.sin_port = htons ( 1234 ) ; // association de l'adresse de l'hote avec le socket nouvellement cree int res = bind(sock, (struct sockaddr *)&dest, sizeof dest); if (res != 0) { printf ( " Erreur au 'bind' du socket %d... \n\r", res ) ; return -2 ; } printf ( "Socket cree et correctement associe a l'hote distant \n\r" ) ; // reception des donnees en provenances du socket char buf[1500]; printf ( "reception des donnees du socket \n\r " ) ; recv(sock, buf, sizeof buf, 0); printf ( "fin du socket \n\r" ) ; return sock ; }
Egalement, je voudrais savoir comment peut-on considérer le descripteur de fichier renvoyé lors de la création du socket (par la fonction "socket") ? En fait mon code lit des fichiers vidéos .ts a partir d'un argument lors de son appel (ouverture avec la fonction fopen), pourrait-il lire les donnees a partir du descripteur de fichier renvoyé par ce socket ? (avec la fonction fdopen par exemple) ?
Merci à tous pour votre aide
D.R.
Partager