TWSocket UDP Empfang bereitet Probleme



  • Hallo,

    vielleicht kann mir einer Helfen,
    ich hab nen Thread geschrieben in dem ein TWSocket für den Empfang von UDP Paketen zuständig ist. Es sind immer 43 Pakete die empfangen werden sollen.
    Jedes Paket hat 1440 Byte UDP Daten im Payload. Diese sollen Nach dem Empfang in einen Array geschrieben werden um weiterverarbeitet zu werden.

    Das Problem ist, das ganz sporadisch die InBuffer_Length ab un zu -1 ist.Manchmal nur wenige Pakete, manchmal auch über 50%. Weiterhin gibt mir der Socket auch zuviele Daten aus. Wenn zB. 43 Pakete physisch ankommen, dann gibt mir der Socket 60 aus und 20 davon halt mit einer Length von -1.

    Ist der Puffer zu klein? Die Datenrate ist 1Gbit oder 100MBit, an was kann das liegen? Die Daten kommen auch wunderbar an, sagt mir wireshark jedenfalls.

    Vielen Dank für Eure Antworten

    void __fastcall TUDP_Deconstruct_Thread::WSocketDataAvailable(TObject *Sender, WORD ErrCode)
    {
    	int InBuffer_Length;
    	InBuffer_Length = WSocket->Receive( InBuffer, sizeof(InBuffer) ); 
    
    	if ((InBuffer_Length > 0) && (Arraycount < 43))
    	{
    		memcpy(WorkBuffer[Arraycount],InBuffer,sizeof(InBuffer));
    		WorkBuffer_Length[Arraycount] = InBuffer_Length;
    		Arraycount++;
    		if (Arraycount == 42) {
    			DS.printf(" SetEvent(IThread_StopGo_Event);");
    			OutputDebugString(DS.c_str());
    			Arraycount = 0;
    		}
    
    	}
    
    }
    

Anmelden zum Antworten