netzwerkprobleme...



  • Moin!
    ich hab ein programm geschrieben das auf 2 rechnern über netzwerk miteinander kommuniziert..das programm zeigt cursorbewegungen des jeweils anderen benutzers an.

    sinn des ganzen ist es herauszufinden wie schnell man mit udp daten übertragen kann. jetzt hab ich das problem: mir scheint das einfach zu langsam...getestet wurds mit 2 absolut freien dsl-leitungen aber der "remote-cursor" ruckelt einfach..

    jetzt steigt in mir die frage auf: hab ich scheiss gebaut oder ist das einfach so und es geht nunmal nicht schneller?

    Folgende Funktion läuft in einem eigenen Thread und sollte die Netzwerkgeschichte erledigen.

    clpt und pt sind POINT-strukturen für die jew. cursor.

    DWORD WINAPI networking(LPVOID vd)
    {
    	char buff[10];
    	int sz = sizeof(sockaddr_in);
    
    	while(true)
    	{
    		if(server)
    		{
    			recvfrom(locals,buff,10,0,(sockaddr*)&clientaddr,&sz);
    			memcpy(&clpt,buff,sizeof(POINT));
    			memcpy(buff,&pt,sizeof(POINT));
    			sendto(locals,buff,10,0,(sockaddr*)&clientaddr,sz);
    		}
    		else
    		{
    			memcpy(buff,&pt,sizeof(POINT));
    			sendto(locals,buff,10,0,(sockaddr*)&clientaddr,sz);
    			recvfrom(locals,buff,10,0,(sockaddr*)&myaddr,&sz);
    			memcpy(&clpt,buff,sizeof(POINT));
    		}
    	}
    	return 0;
    }
    

    es kann doch nicht solang dauern das der cursor ruckelt..
    hat jmd ne idee wie das performanter zu machen ist?

    mfg



  • Servus,

    das ist mehr oder weniger normal das es bei DSL ruckelt. Ein DSL Rahmen ist im Schnitt 1400 Bytes groß (auch bekannt als MTU). Aber deine 10 Bytes + vielleicht noch 200 Bytes IP-Header reichen bei weitem nicht aus um einen DSL Rahmen zum Verteiler zu füllen. Dies hat zur folge das dein Router auf Daten zum füllen wartet. Irgendwann füllt er denn Rahmen selber aus das ist wahr, aber das dauert.

    Probier mal eine eigene Struktur zu machen die ein wenig größer ist.

    Benutzt du IP's zum Verschicken oder DNS-Namen?

    MfG
    SaM



  • Interessantes Programm...
    Gibt es eine Möglichkeit an den kompletten Quellcode zu kommen?
    (Das ist jetzt nicht unhöfflich gemeint, möchte nur lernen!)

    MfG,
    C++ Core



  • die sache ist gelöst.

    das problem war das ich blockierende sockets benutzt hab. dadurch wartet recv bis es ein paket empfängt, bevor es wieder eins sendet. wenn jedoch recv nur empfängt wenn es was zu empfangen gibt, und ansonsten immer sendet funktionierts ohne ruckeln tadellos.

    ich hab also auf nicht-blockierende sockets umgestellt, vor dem send noch ein Sleep(10) reingequetscht (wenn er pausenlos sendet wird der packet-loss zu gross)
    und tada es geht...

    @ c++-core:
    klar. mail mich mal an, dann schick ich dir den code.

    mfg



  • achja 🙂 bin ja nicht registriert...

    finalnotrix@web.de


Anmelden zum Antworten