IO::Socket Unterschied zwischen recv und read

IO::Socket Unterschied zwischen recv und read

am 12.01.2008 18:28:53 von Andreas Hernitscheck

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!

Re: IO::Socket Unterschied zwischen recv und read

am 12.01.2008 20:23:39 von unknown

Post removed (X-No-Archive: yes)

Re: IO::Socket Unterschied zwischen recv und read

am 13.01.2008 22:38:48 von Andreas Hernitscheck

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.

Re: IO::Socket Unterschied zwischen recv und read

am 13.01.2008 22:46:41 von Andreas Hernitscheck

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.

Re: IO::Socket Unterschied zwischen recv und read

am 18.01.2008 22:19:08 von unknown

Post removed (X-No-Archive: yes)

Re: IO::Socket Unterschied zwischen recv und read

am 31.03.2008 13:34:30 von Kevin Osthoff

On 2008-01-12, Andreas Hernitscheck 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