ptitchep | Bonjour.
J'ai besoin d'une communication UDP dans un jeu et j'ai quelques soucis que je ne pige pas.
J'ai donc un serveur qui envoit des infos aux clients. Le code est portable et compile sous linux et windows. Seul souci, le client ne fonctionne pas sous windows...
Sous Linux aucun problème communication ok.
Serveur sous windows et client sous linux ok.
Client sous windows => problème. La fonction recvfrom me renvoit toujours -1 (par contre le client peut envoyer via la même socket) et errno=0.
Si quelqu'un comprend pourquoi ce -1 (avec errno=0)...
ptit bout de code:
Serveur:
Code :
- JoueurReseau *jj=dynamic_cast<JoueurReseau*>(*it);
- if (jj && jj->getAdresse()!=NULL)
- sendto(socketUDP,&paq,sizeof(paq),0,jj->getAdresse(),sizeof(*jj->getAdresse()));
|
Client:
Code :
- int i=select(socketMax+1, &desc, NULL, NULL, &t);
- if (i>0)
- {
- if (FD_ISSET(socketUDP,&desc))
- {
- PaquetUDP i;
- enCours=buffer;
- struct sockaddr_in from;
- socklen_t a;
- while (enCours < buffer+sizeof(PaquetUDP))
- {
- int lala= recvfrom(socketUDP,enCours,
- sizeof(PaquetUDP)-(enCours-buffer),
- 0,&from,&a);
- if (lala<0)
- {
- std::cerr<<"Erreur de connexion udp "<<errno<<" "<<lala<<std::endl;
- break;
- }
- enCours+=lala;
- }
|
Message édité par ptitchep le 01-09-2008 à 11:16:55 ---------------
deluser --remove-home ptitchep
|