bonjours, je cherche à utiliser une socket UDP en cpp et la lecture fonctionne très bien, en simple ou multicast par contre l’envoie de données ne fonctionne pas :(
je communique avec un serveur en java (d’où le fait que je cache que le recv est bon ) qui est sensé être compatible. (en tout cas il l'est pour l'aller du message)
voila ma fonction send:
elle ne me retourne aucune erreur et semble fonctionner mais rien ne passe sur le réseau...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 bool SocketUDP::sendTo(char* buff,int length){ struct sockaddr_in si_other; int slen=sizeof(si_other); memset((char *) &si_other, 0, sizeof(si_other)); si_other.sin_family = AF_INET; si_other.sin_port = htons(port); if (inet_aton(host.c_str(), &si_other.sin_addr)==0) { cout<<"Erreur d'addressage"<<endl; return false; } if (sendto(sockDesc, buff, length, 0, (const sockaddr*)&si_other, slen)==-1){ cout<<"Erreur de sendTo"<<endl; return false; } return true; }
au préalable j'initialise ma socket comme suit:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 bool SocketUDP::init(){ if((sockDesc = socket(AF_INET, SOCK_DGRAM, 0))<=0) return false; int opval = 1; if(setsockopt(sockDesc,SOL_SOCKET,SO_REUSEADDR,&opval,sizeof opval) < 0) return false; sockaddr_in localAddr; memset(&localAddr, 0, sizeof(localAddr)); localAddr.sin_family = AF_INET; localAddr.sin_addr.s_addr = htonl(INADDR_ANY); localAddr.sin_port = htons(port); if (bind(sockDesc, (sockaddr *) &localAddr, sizeof(sockaddr_in)) < 0) return false; return true; }
l'ip et le port sont bon (le serveur fonctionne parfaitement, il tourne actuellement avec des clients java).
voila, si quelqu'un a une idée moi je suis complétement bloqué dessus :(