Windows XP SP3 und UDP-Broadcast



  • Hallo,

    ich weiß jetzt nicht so genau wohin mit der Frage, man möge mich zur Not ein wenig im Forum hin und her schieben...
    Also:
    Ich benutze in meinem Programm den TIdUDPClient um über das Netzwerk Infos zu verschicken.

    UDPClient->Broadcast("blabla",08154711);
    

    Auf der anderen Seite sind TIdUDPServer die die Daten verwurschteln.
    Meine Frage ist jetzt: Warum "steht" die Anwendung für ca. 1-2 Sek beim versenden unter XP SP3, während Vista und XP SP1 keine Probleme machen?

    mfg
    xXx



  • Der Port sieht etwas abenteuerlich aus. Versuchs mal mit nem gültigen Wert.



  • Das ist natürlich nicht der richtige Port... Der ist glaube ich 12345

    Aber wenn der Port "falsch" wäre würde es ja gar nicht gehen. Aber klappen tuts ja, nur dauert es ewig...

    mfg
    xXx



  • -=]xXx[=- schrieb:

    Meine Frage ist jetzt: Warum "steht" die Anwendung für ca. 1-2 Sek beim versenden unter XP SP3, während Vista und XP SP1 keine Probleme machen?

    Da wir das kürzlich erst hatten: benutze doch einen Profiler.

    Wahlweise könntest du auch während der 1-2 Sekunden dein Programm aus der IDE heraus unterbrechen und überprüfen, welche Funktion im entsprechenden Thread gerade ausgeführt wird.



  • Wenn dein Beispiel gar kein Beispiel ist, taugt es nur bedingt als Beispiel. XP hatte mal ein Problem mit UDP-Broadcasts über einer bestimmten Größe (1500B?). Weiß nicht genau, ob das auf SP3 noch zutrifft.



  • Ich habs jetzt endlich mal geschafft, mit einem Profiler (LTProf 1.5) das ganze zu untersuchen.

    Call Stack mit prozentualer Verweildauer:

    (50.66) WinMain
    	(50.66) Forms::TApplication::Run
    		(50.66) Forms::TApplication::HandleMessage
    			(44.51) KiFastSystemCallRet ?
    			(6.00) Forms::TApplication::ProcessMessage
    				[...]
    (35.87) GetModuleFileNameA ?
    	(35.87) System::ThreadWrapper
    		(35.87) Classes::ThreadProc
    			(35.87) Idthread::TIdThread::Execute
    				(35.87) Idudpserver::TIdUDPListenerThread::Run
    					(35.87) Idthread::TIdBaseThread::Synchronize
    						(35.87) Classes::TThread::Synchronize
    							(35.87) Classes::TThread::Synchronize [1]
    								(35.87) WaitForSingleObject ?
    									(35.87) KiFastSystemCallRet ?
    
    (13.47) strxmov ?			
    	(13.47) recv ?		
    		(13.47) WSARecv ?	
    			(13.47) KiFastSystemCallRet ?
    

    Es scheint also nicht das Senden, sondern das Empfangen zu dauern (Jedes Programm ist Sender und Empfänger gleichzeitig).
    Kann mir das jemand erklären? 🙂

    mfg
    xXx


Anmelden zum Antworten