2016-04-24 5 views
0

Ich versuche mit meiner Esp8266 zu kommunizieren und wie Sie sehen können, habe ich erfolgreich ein Paket von ihm alle 2 Sekunden erhalten:SDL_net keine UDP-Pakete empfängt

wireshark screenshot

wireshark

aber es scheint, wie ich erhalte keine Daten in meinem SDL_net App (die, wenn in der während am Ende immer falsch bleibt):

#include <stdlib.h> 
#include <SDL2/SDL.h> 
#include <SDL2/SDL_net.h> 

int main(int argc, char **argv) 
{ 
    /* initialize SDL */ 
    if(SDL_Init(0)==-1) 
    { 
     printf("SDL_Init: %s\n",SDL_GetError()); 
     exit(1); 
    } 

    /* initialize SDL_net */ 
    if(SDLNet_Init()==-1) 
    { 
     printf("SDLNet_Init: %s\n",SDLNet_GetError()); 
     exit(2); 
    } 
     UDPsocket udpsock; 

     udpsock=SDLNet_UDP_Open(6666); 
     if(!udpsock) { 
      printf("SDLNet_UDP_Open: %s\n", SDLNet_GetError()); 
      exit(2); 
     } 

     UDPpacket *packet = SDLNet_AllocPacket(2048); 
     int numrecv; 

     while(1) 
     { 

      if(SDLNet_UDP_Recv(udpsock, packet)) { 
       printf("%s",packet->data); 
      } 
     } 

    /* shutdown SDL_net */ 
    SDLNet_Quit(); 

    /* shutdown SDL */ 
    SDL_Quit(); 

    return(0); 
} 

es funktionierte, als ich habe Senden Sie es Pakete von localhost, also habe ich versucht, meine Firewall herunterzufahren, aber es hat immer noch nicht funktioniert. Danke für all deine Hilfe.

bearbeiten: Also habe ich versucht, ähnliche Sache mit boost :: asio schreiben. Beide Programme (SDL_net und boost :: asio) empfangen Pakete von localhost, aber keiner von ihnen kann etwas von einem anderen Gerät empfangen (Ich habe mein sendendes Programm versucht, das funktioniert über localhost, auf einem anderen PC, aber immer noch ohne Erfolg). Also denke ich, dass etwas mit meinem Ubuntu nicht stimmt. Irgendwelche Ratschläge was soll ich damit machen?

+0

Um ersten Schritt zu debuggen, fügen Sie ein anderes hinzu, um irgendwelche mögliche Fehler zu drucken: 'if (SDLNet_UDP_Recv (udpsock, Paket)) { printf ("% s ", packet-> data); } else {// Druckfehler} ' – fluter

+0

Vielen Dank für Ihre Antwort, ich habe versucht, printf ("% s ", SDLNet_GetError()); drinnen sonst, aber nichts ist passiert (kein Fehler aufgedruckt). – vyzigold

Antwort

0

Ok, ich denke, ich habe endlich das Problem gefunden, ich habe versucht, zu viel Platz für das Paket zuzuordnen. Ich weiß nicht, warum es überhaupt zählt, aber als ich die Nummer in SDLNet_AllocPacket (2048) änderte; bis 32, fing alles an zu arbeiten