perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 29
Click for quality!




04.02.2012 / 13:22

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Suchanfragen für Scripts/Programmierung zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragModemübertragung simulieren?
Seitenanfang
Ich suche ein cgi-script (oder auch gerne irgend eine andere Lösung), das im lokalen Netzwerk mit installiertem Web-Server (WinNT4-SP6, OmniHttpd) intern die Übertragungsrate eines Modems simuliert.
Das einzige, dass ich bisher fand, war von Daniel Naber aus dem Jahre '97 und selbst nach Modifikation lief es nicht. Für jede Idee wäre ich dankbar.

Datum: 25.09.2002-17:25

Beitragre: Modemübertragung simulieren?
Seitenanfang
Hallo

Da man mit so einem Programm, jede Menge Unfug machen kann, würde ich sowas nicht zum Download anbieten. (andere wohl auch nicht)
Der Trick ist, nach dem Lesen von z.B. 4KB vom Socket (Netzwerkverbindung) eine Pause von einer Sekunde einzulegen.
Das Problem ist, daß, wenn man, (bei manchen Scripts) an der richtigen Stelle anhält, man das Script bis zu einer Laufzeit, von einer halben Stunde treiben kann.

Damit kann man dann Ärger kriegen...

Gruß
Kristian

Datum: 25.09.2002-17:53

Beitragre: Modemübertragung simulieren?
Seitenanfang
Na Ärger wollen wir bestimmt nicht verursachen. :-)
Und an richtigen Stellen anhalten wird ja wohl auch gelingen. Man versucht doch schließlich sauber zu programmieren. Ich denke die Sache ist auch gar nicht so kompliziert, ich sitze parallel dazu und schreibe schon am script.

Mein Ansatz ist: Eine Html-Datei einlesen, darin vorkommende Bild-, Flash-, etc.-dateien ebenfalls einlesen und dann das ganze Stückchen für Stückchen durch das script an den Browser zu senden (natürlich mit nph).

Nur: Wenn es schon etwas in der Richtung gibt, dann könnte ich vielleicht ein bisschen Zeit sparen.

Übrigens: Unfug treibe ich mit solchen Sachen bestimmt nicht, weil ich so etwas sch**** finde!

Datum: 25.09.2002-18:16

Beitragre: Modemübertragung simulieren?
Seitenanfang
Hallo
Thema: Sauber programmieren.
Gute Idee! nur manchmal treffen Dinge aufeinander die entziehen sich einfach deinen Möglichkeiten. z.B. FastCGI: Ab 64 KB Ausgabe des Scripts (je nach System auch erst ab 128 KB) wird die Ausgabe in mehreren Teilen erfolgen. Liegt am Buffer.
Wenn man dort nach dem ersten Schub keine Daten mehr vom Sever nimmt steht das Ding...

Thema: Ansatz
Ich habe dazu ein Perl/Tk Programm, das "browsen" kann. Daten holen erfolgt per LWP oder Socket. Anzeige (nur Text) via HTML::Parser. Das Ganze nennt sich dann CGI-Tester. ;-)

Das was du das schreibst, klingt mehr nach einem Proxy-Server?

Gruß
Kristian

Datum: 25.09.2002-18:32

Beitragre: Modemübertragung simulieren?
Seitenanfang
Ja stimmt, das ähnelt stark einem Proxy, nur simpler. Sinn und Zweck besteht darin, dass ich keine Veränderungen im System/Netzwerk vornehmen möchte, da das dann auch mindestens eine Workstation komplett betrifft.
Hardwarelösungen sind auch zu viel Gefummel:
Am Server RAS einrichten, über TK-Anlage 'ne Analog-Modem-Leitung zum Server, usw.

Der Nutzen ist auch nur eine Geringer: Es geht eigentlich nur um Ladezeiten von FLASH-Animationen, d.h. das script braucht nicht ein mal bilder oder oder andere Dateien zu interpretieren (ist 'ne Gefälligkeit für ein Kollegen :-). Den Server bringe ich schon dazu, dass er nicht stehen bleibt.

Datum: 25.09.2002-18:54

Beitragre: Modemübertragung simulieren?
Seitenanfang
> Der Nutzen ist auch nur eine Geringer: Es
> geht eigentlich nur um Ladezeiten von

Hmm, klingt nach nem normalen Benchmark?
Apache legt dazu 'ab' bei.
Bei $MS gibt es auch ein Tool dafür.

Gruß
Kristian

Datum: 25.09.2002-19:37

Beitragre: Modemübertragung simulieren?
Seitenanfang
Nee, es geht um Marotten von FLASH-Filmen, die aus unerfindlichen Gründen manchmal bei sehr geringen Übertragungsraten hängen bleiben.
Das läßt sich im FLASH-Film durch Zeiteinstellungen zwar beheben (sagt mein Fachmann), nur braucht man dafür eine 'echte' langsame Übertragung als Referenz.

Naja, ich gebe auch zu: Es ist eher ungewöhnlich, etwas manuell langsamer machen zu wollen denn schneller. Trotzdem danke für deine Unterstützung, Kristian.

Wahrscheinlich habe ich das script selbst bald fertig geschrieben. :-)
Bei Interesse bin ich auch gern bereit dieses weiter zu geben, einfach melden.

Datum: 25.09.2002-19:56

Beitragre: Modemübertragung simulieren?
Seitenanfang
Hallo

#!/usr/local/bin/perl
$|++;
use strict;
use warnings;
use diagnostics;
use IO::Socket;
use URI;

my $sleep_time = 1;
my $target_url = 'http://www.koehlershohn.de';
my $path = '/index.html';
my $crlf = "\015\012";
my $request_string = 'GET ' . $path . ' HTTP/1.0' . "$crlf$crlf";
my $line;

my $this_url = URI->new($target_url);
my $host = $this_url->host();
my $target = IO::Socket::INET->new( Proto => 'tcp',
PeerAddr => $host,
PeerPort => '80',
) or die("Geht nicht da $!");
$target->autoflush(1);
print "Connected\n";
print $target $request_string;

while($line = <$target>){
print $line;
sleep($sleep_time);
}
$target->close();

Damit kann man wohl nichts anstellen. Ich hoffe es hilft dir.
Gruß
Kristian

Datum: 26.09.2002-11:28

Beitragre: Modemübertragung simulieren?
Seitenanfang
Bin gerade 'rein und habe deine Nachricht bekommen. Danke erstmal dafür.

Ich habe es in der Zwischenzeit (gestern Nacht) auch geschafft, allerdings ein bisschen anders. Klappt auch so weit.

Was ich bei dir aber nicht verstehe ist, wo du die eigentliche Modemgeschwindigkeit darstellst. Dein script macht es nur allgemein langsamer, oder?

Mein Prinzip ist folgendes:
Ich habe ein Formular mit einem Textfeld und fünf Radiobuttons für 9600bps :-), 14400bps, usw. bis 64000bps. Die im Textfeld angegebene Datei wird durch das Script eingelesen. Sofern es sich um eine Html-Datei handelt, werden in dieser alle scr=" und href=" um das Abbremsscript erweitert und somit durch das Abbremsscript ausgegeben.
Das haut hin, außer ausgerechnet bei Flashfilmen, wofür ich das ja schreiben wollte. Naja muss ich noch modifizieren. Für Bilder, css-Dateien und js-Dateien funzt es jedoch.

Datum: 26.09.2002-13:31

Beitragre: Modemübertragung simulieren?
Seitenanfang
achsoja, hab ich noch vergessen:
Meine Lösung stelle ich nicht so öffentlich hin, weil es 1. länger ist, 2. nicht für jedermann gut ist und 3. ich wissen möchte, wer das script bekommen hat. Also, bei Interesse schicke es gerne zur Ansicht per e-Mail.

Datum: 26.09.2002-13:41

Beitragre: Modemübertragung simulieren?
Seitenanfang
Hallo
Interessanter wäre der Link zu den Daten die zu ziehst.
Von Flash habe ich so viel Ahnung wie ne Kuh vom Stabhochsprung...
Wie kommen die Daten da raus?
Hat mal einer ne URL mit Flash? ;-)

Datum: 26.09.2002-13:50

Beitragre: Modemübertragung simulieren?
Seitenanfang
Modemgeschwindigkeit...
Jau ich habe zeilenweise gelesen. So wird es einstellbarer:

while (sysread($target, $buffer, $block_size)){
print $buffer;
sleep($sleep_time);
}

Gruß
Kristian

Datum: 26.09.2002-14:12

Beitragre: Modemübertragung simulieren?
Seitenanfang
yupp, so ises.
Im Prinzip fehlt bei deinem script jetzt nur noch das Ersetzen der Links in einer evtl. Html-Datei (wie zuvor bei mir beschrieben) und dann läuft's auch komplett.

Flashfilm:
Tja, der Knackpunkt ist wahrscheinlich, dass bei Aufruf eines FLASH-objectes sowohl ein
<object><param name="movie" value="flashfilm.swf">... als auch ein
<embed ... src="flashfilm.swf" ...> verwendet wird. Das ist eigentlich nur wegen der unterschiedlichen Einbindung in IE und NS, aber durch das Zwischenschleifen des Abbremsscripts wird es dann trotzdem quasi zweimal aufgerufen. Das war jedenfalls meine erste Idee der Fehlerdiagnose.

Datum: 26.09.2002-14:30

Beitragre: Modemübertragung simulieren?
Seitenanfang
Hmm, wenn das Flashteil Browserabhängig ist solltest du ihm wohl die Version deines Browsers sagen.
Versuch es doch mal so:

#!/usr/local/bin/perl
$|++;
use strict;
use warnings;
use diagnostics;
use IO::Socket;
use URI;
use HTML::Parser();
my $browser = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; QXW03404)';
my $sleep_time = 0.25; # 0.25 seconds
my $block_size = 1024;
my $target_url = 'http://www.koehlershohn.de';
my $path = '/index.html';
my $crlf = "\015\012";
my ($size,$loaded) = (0,0);
my($line,$buffer,$url,@targets,$new_url,$target,$request_string);
my $this_url = URI->new($target_url);
my $host = $this_url->host();
push(@targets,$path);
my $p = HTML::Parser->new(api_version => 3,
start_h => [ \&start, "tagname, attr, text, tokens"]
) or die("Geht nicht da $!");
$p->marked_sections(1);
$p->unbroken_text(1);
while(scalar(@targets)){
$url = URI->new(shift @targets);
$path = $url->path();
print "Lade $path\n";
$target = IO::Socket::INET->new( Proto => 'tcp',
PeerAddr => $host,
PeerPort => '80',
) or die("Geht nicht da $!");
$target->autoflush(1);
$request_string = 'GET ' . $path . ' HTTP/1.0' . "$crlf";
$request_string .= 'User-Agent: ' . $browser . "$crlf$crlf";
print $target $request_string;
while ($size = sysread($target, $buffer, $block_size)) {
$loaded += $size;
$p->parse($buffer) if($path =~ /\.html?$/);
select(undef,undef,undef,$sleep_time);
}
$target->close() or die("$!");
}
print "$loaded Bytes loaded\nHave a nice day\n";
sub start{
my($tagname, $attr, $origtext, $tokens, $dtext) = @_;
if($tagname eq 'img'){
unshift(@targets,$attr->{'src'});
}elsif($tagname eq 'a'){
push(@targets,$attr->{'href'});
}elsif($tagname eq 'embed'){
unshift(@targets,$attr->{'src'});
}elsif($tagname eq 'object'){
unshift(@targets,$attr->{'value'});
}
}

In sub start wartet noch Arbeit, aber hmm, ohne Testdatei kann ich das nu auch nicht.

Gruß
Kristian

Datum: 26.09.2002-16:16

Beitragre: Modemübertragung simulieren?
Seitenanfang
Ich konnte gerade nicht. Mein einer 17-Zöllner is' abgestunken. :-((

Aber Donnerwetter! Ich habe jetzt zwar nicht alles komplett verfolgt (ich muss auch gestehen: ich arbeite nicht so viel mit Modulen, daher weiss ich einiges nicht), aber das sieht gut aus.

Ein Flashfilm soll nicht das Prob sein. Ich habe für dich meine paar Dateien inkl. Flashani in ein ZIP zum download bzw. zum e-Mail-versandt vorbereitet. Gibs aba nur für dich und nich öffentlich :-)

Gruß

Datum: 26.09.2002-18:56

Beitragre: Modemübertragung simulieren?
Seitenanfang
Hallo
> Ich habe für dich meine paar Dateien inkl. Flashani in ein ZIP zum download bzw. zum
> e-Mail-versandt vorbereitet. Gibs aba nur für dich und nich öffentlich :-)

Fein, aber wo?
Mail mir doch einfach den Link oder den Stoff. ;-)

Vielleicht werde ich ja noch zum Flash-Fan. Hmm, ich glaube aber eher nicht...

Gruß
Kristian

Datum: 26.09.2002-19:11

-






-
-