SPUG: IO::Socket Question
ced at carios2.ca.boeing.com
ced at carios2.ca.boeing.com
Thu Aug 10 14:24:29 CDT 2000
> I think you (and everyone else) are on the right track. However, it still
> doesn't work :)
> If I open up the socket to a web server and request a page (so I'm
> getting a decent amount of data back) it works fine.
> however, with the server I'm connecting to, where all it replies with is
> one work, it hangs on the line referencing <$sock>
If you're just getting a one-word response with no newline,
then, <$sock> will still hang because it's line oriented
and will wait for a newline.
Here's a section from IO::Select that provides another
possible strategy:
...
If the remote server sends data a byte at time, and you need
that data immediately without waiting for a newline (which
might not happen), you may wish to replace the while loop in
the parent with the following:
my $byte;
while (sysread($handle, $byte, 1) == 1) {
print STDOUT $byte;
}
Making a system call for each byte you want to read is not
very efficient (to put it mildly) but is the simplest to
explain and works reasonably well.
Rgds,
--
Charles DeRykus
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
POST TO: spug-list at pm.org PROBLEMS: owner-spug-list at pm.org
Subscriptions; Email to majordomo at pm.org: ACTION LIST EMAIL
Replace ACTION by subscribe or unsubscribe, EMAIL by your Email-address
For full traffic, use spug-list for LIST ; otherwise use spug-list-digest
Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/
More information about the spug-list
mailing list