IO::Socket Unterschied zwischen recv und read

Hallo Alle,

ich kapier einfach nicht was recv genau macht (im Gegensatz zu read).
Offensichtlich was anderes, da folgendes nichts tut. Habe einen Server,
der bei Verbindung einen Text sendet, hier der Client:


while ($fp->recv($bytes,1))
{
print '.'.$bytes;
}

was geht:

while ($fp->read($bytes,1))
{
print '.'.$bytes;
}


.... ich bitte Euch um Aufklärung. Thx!
Andreas Hernitscheck [ Sa, 12 Januar 2008 18:28 ] [ ID #1906357 ]

Re: IO::Socket Unterschied zwischen recv und read

Post removed (X-No-Archive: yes)
Notifier Deamon [ Sa, 12 Januar 2008 20:23 ] [ ID #1906891 ]

Re: IO::Socket Unterschied zwischen recv und read

Am Sat, 12 Jan 2008 19:23:39 +0000 schrieb Ralf Döblitz:

> perldoc -f read
> perldoc -f recv
>
> Die Funktionen haben unterschiedliche Return Values.

Hmm(?) Nun ich verstehe es leider nicht. Nach dem Doc würde ich beides
als gleich verstehen. Bei der recv Variante, springt er einfach weiter,
als gäbe es nichts zum lesen.

Kann mir das Jemand in einfachen Worten Erklären? "Return Values" - mag
sein, aber ich bekomme bei recv einfach garnichts in $bytes.
Andreas Hernitscheck [ So, 13 Januar 2008 22:38 ] [ ID #1906892 ]

Re: IO::Socket Unterschied zwischen recv und read

Am Sun, 13 Jan 2008 22:38:48 +0100 schrieb Andreas Hernitscheck:

>
> Hmm(?) Nun ich verstehe es leider nicht. Nach dem Doc würde ich beides
> als gleich verstehen. Bei der recv Variante, springt er einfach weiter,
> als gäbe es nichts zum lesen.
>
> Kann mir das Jemand in einfachen Worten Erklären? "Return Values" - mag
> sein, aber ich bekomme bei recv einfach garnichts in $bytes.

Naja, so halb konnte ich es mir nun selbst beantworten: In einer while
Schleife macht er bei recv natürlich nichts, wenn es nichts zurückgibt
(was scheinbar mal sein kann). Nur Seltsam ist folgendes:

$fp->read($bytes,2);

ist macht was anderes als

$fp->recv($bytes,2);

Die Länge bei recv ist irgendwie nicht an die 2 Gebunden - er liest immer
das gleiche, auch wenn ich 2 erhöhe. Bei read liest er wirklich 2 bytes.
Andreas Hernitscheck [ So, 13 Januar 2008 22:46 ] [ ID #1906893 ]

Re: IO::Socket Unterschied zwischen recv und read

Post removed (X-No-Archive: yes)
Notifier Deamon [ Fr, 18 Januar 2008 22:19 ] [ ID #1912233 ]

Re: IO::Socket Unterschied zwischen recv und read

On 2008-01-12, Andreas Hernitscheck <velo [at] despammed.com> wrote:
> Hallo Alle,

Hi Andreas!

> ich kapier einfach nicht was recv genau macht (im Gegensatz zu read).
> Offensichtlich was anderes, da folgendes nichts tut. Habe einen Server,
> der bei Verbindung einen Text sendet, hier der Client:

Also so wie ich das verstanden habe, ist read gebuffert während
recv ungebuffert ist. Das read in Perl ruft intern fread auf. Möchtest
du ein ungebuffertes read, musst du sysread verwenden.
Ich stell mir jetzt die Frage, wo der Unterschied zwischen recv und
sysread ist, von den Rückgabewerten jetzt mal abgesehn.
Laut Documentation implementiert recv den recvfrom call.
Sollte man also recv nur fürs udp-Protokoll verwenden oder ist das egal?

Gruß Kevin
Kevin Osthoff [ Mo, 31 März 2008 13:34 ] [ ID #1933325 ]
Perl » de.comp.lang.perl.misc » IO::Socket Unterschied zwischen recv und read

Vorheriges Thema: N anstatt eine Datei bearbeiten
Nächstes Thema: Re: sporadisch keine Leserechte von mit GD erstelltem Image