BrianCM has asked for the wisdom of the Perl Monks concerning the following question:
I am in the process of writing a Perl module to interface an OEM C library to Perl.
A C function returns a socket descriptor, from socket().
I would like to use IO::Select to determine when the socket is ready to read.
The code I have works under UNIX Perl, but not WIN-NT Perl. (Perl 5.00503)
I think that I need to somehow insert the socket descriptor into a Perl IO::Socket object, but I can't figure out how to do that.
What do I need to do to get IO::Select to accept a socket descriptor?
Thanks.
-- BrianCM
#####################################################
# ConConnect is an OEM function to make TCP connection
# to a server.
$sd = ConConnect( $ENV{'CCHOST'}, $ENV{'CCPORT'} );
croak( "ConConnect failed" ) if $sd == &ConLib::INVALID_SOCKET;
#
# ...... code deleted
# At this point $sd is a valid socket
# Add descriptors for select call
$allfds->add( \*STDIN );
$allfds->add( $sd ); # I presume the problem is here.
# Works for UNIX, not Win-NT
while( 1 ) {
my @fds = $allfds->can_read( undef ); # hangs here on NT
foreach my $stream (@fds) {
if( $stream == \*STDIN ) {
last if processStdin() < 0; # process STDIN stream
}
if( $stream == $sd ) {
last if processInput( $sd ) < 0; # proc- Comment on Using socket descriptor with IO::Select
| Replies are listed 'Best First'. | |
|---|---|
|
RE: Using socket descriptor with IO::Select
by ender (Novice) on Mar 22, 2000 at 23:50 UTC |