SPUG: IO::Socket Question
David Bitseff
dbitsef at uswest.com
Thu Aug 10 20:11:35 CDT 2000
Keep in mind that when using the lower level sysread and syswrite
functions you should not use buffered reads and writes (like print and
<FILHANDLE>) on the same filehandle. I think it says this somewhere
in the perldoc.
>> 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>
ced> If you're just getting a one-word response with no newline, then,
ced> <$sock> will still hang because it's line oriented and will wait
ced> for a newline.
ced> Here's a section from IO::Select that provides another possible
ced> strategy:
ced> ... If the remote server sends data a byte at time, and you
ced> need that data immediately without waiting for a newline
ced> (which might not happen), you may wish to replace the while
ced> loop in the parent with the following:
ced> my $byte; while (sysread($handle, $byte, 1) == 1) {
ced> print STDOUT $byte;
ced> }
ced> Making a system call for each byte you want to read is not
ced> very efficient (to put it mildly) but is the simplest to
ced> explain and works reasonably well.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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