Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Funktion sendet Variable bevor diese gesetzt ist.

  1. #1
    Registrierter Benutzer
    Registriert seit
    30.03.2004
    Ort
    Sauerland
    Beiträge
    54

    Funktion sendet Variable bevor diese gesetzt ist.

    Hi,
    habe gerade nen ganz krankes Problem.
    Hab mir ein schönes Netzwerkprogramm mit SDL_net gebaut.
    Das sendet nen Integerwert an einen Server.
    Leider wird dieser Integerwert erst nach dem senden mit dem Wert 2 belegt.
    Und das tolle Programm sendet dann -1077115739.
    Das regt mich tierisch auf denn ich bin vollkommen machtlos das der Compiler meinen Code so übersetzt.
    Was kann ich dagegen machen?
    Code:
    	 /* Now we need to tell send the server the port we listen on and
    	 * that we are ready to handle clients and want to time the universe.
    	 */
    	if( SDLNet_ResolveHost( clientIp, _serverIp, conf.getServerPort() ) == -1 )
    	{
    		std::cerr << "SDLNet_ResolveHost: " << SDLNet_GetError() << std::endl;
    		return false;
    	}
    	//scClient is used here to connect to the server, later for new clients
    	if( !( scClient = SDLNet_TCP_Open( clientIp ) ) )
    	{
    		std::cerr << "SDLNet_TCP_Open: " << SDLNet_GetError() << std::endl;
    		return false;
    	}
    	
    	int id=2;		//the server has to know that this is the timer
    	SDLNet_TCP_Send( scClient, &id, sizeof(int) );
    
    	bool exists;	//there are no 2 timers allowed
    	SDLNet_TCP_Recv( scClient, &exists, sizeof(bool) );
    Dieses Programm dagegen funktioniert, obwohl es die gleichen Werte hat:
    Code:
    	if( SDLNet_ResolveHost( ip, "127.0.0.1", 5723 ) == -1 )
    	{
    		std::cerr << "could not resolve\n";
    	}
    	s=SDLNet_TCP_Open(ip);
    	if(!s)
    		std::cerr << "failed to open\n";
    	int id=2;
    	SDLNet_TCP_Send( s, &id, sizeof(int));
    	bool exists;
    	SDLNet_TCP_Recv( s, &exists, sizeof(bool));
    	if(!exists)
    	{
    		int port=5724;
    		SDLNet_TCP_Send(s,&port, sizeof(int));
    		SDLNet_TCP_Close( s );
    		std::cout << "success\n";
    	}
    	else
    	{
    		std::cout << "failure\n";	
    	}
    Geändert von scar (21-10-2006 um 15:02 Uhr)
    Ge[eE]n[tT]o[oO]

  2. #2
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Aufgrund deiner Signatur frage ich mal: nutzt du irgendwelche speziellen Compileroptimierungsflags?

  3. #3
    Registrierter Benutzer
    Registriert seit
    30.03.2004
    Ort
    Sauerland
    Beiträge
    54
    Nein ist selbstgeschrieben und in Anjuta hab ich nichts angegeben.
    Ge[eE]n[tT]o[oO]

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •