ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

For more information about the manual page format, see the manual page for manpages(5).



Wx::Socket(3)                        User Contributed Perl Documentation                       Wx::Socket(3)



NAME
       Wx::Socket - wxSocket* classes

USAGE
         use Wx qw(:socket) ;
         use Wx::Event qw(EVT_SOCKET_INPUT EVT_SOCKET_LOST) ;
         use Wx::Event qw(EVT_SOCKET_CONNECTION) ;

         ##########
         # CLIENT #
         ##########

         my $sock = Wx::SocketClient->new(wxSOCKET_WAITALL);

         EVT_SOCKET_INPUT($parent , $sock , \&onInput ) ;
         EVT_SOCKET_LOST($parent , $sock , \&onClose ) ;

         $sock->Connect('localhost',5050) ;

         if (! $sock->IsConnected ) { print "ERROR\n" ;}

         sub onInput {
           my ( $sock , $this , $evt ) = @_ ;
           my $length = 123;
           my $buffer ;
           $sock->Read($buffer , 1024 , $length ) ;
         }

         ##########
         # SERVER #
         ##########

         my $sock = Wx::SocketServer->new('localhost',5050,wxSOCKET_WAITALL);

         EVT_SOCKET_CONNECTION($parent , $sock , \&onConnect ) ;

         if ( !$sock->Ok ) { print "ERROR\n" ;}

         sub onConnect {
           my ( $sock , $this , $evt ) = @_ ;
           my $client = $sock->Accept(0) ;

           my ($local_host,$local_port) = $client->GetLocal ;
           my ($peer_host,$peer_port) = $client->GetPeer ;

           $client->Write("This is a data test!\n") ;

       ... or ...

           $client->Write( $data , length($data) ) ;

           $client->Close ;
         }

METHODS
       All the methods work as in wxWidgets (see the documentation).

       The functions for reading data (Read, ReadMsg, Peek) take 3 arguments, like the Perl read() function:

         ## To read the data into the variable
         $sock->Read($buffer , 1024) ;

       ... or ...

         ## To append data at the given offset:
         $sock->Read($buffer , 1024 , $offset ) ;

       The write functions (Write, WriteMsg, Unread) can be used with 1 or 2 arguments:

         $client->Write("This is a data test!\n") ;

         $client->Write($data , $length) ;

EVENTS
       The events are:

           EVT_SOCKET
           EVT_SOCKET_ALL
           EVT_SOCKET_INPUT
           EVT_SOCKET_OUTPUT
           EVT_SOCKET_CONNECTION
           EVT_SOCKET_LOST

       The EVT_SOCKET works as in wxWidgets, the others are wxPerl extensions.

       Note that EVT_SOCKET events of wxSocketClient and wxSocketServer work differently than other event
       types.

       First you need to set the event handler:

           $sock->SetEventHandler($handler, $id) ;

       Then you set what types of event you want to receive:

           ## this select all.
           $sock->SetNotify(wxSOCKET_INPUT_FLAG|wxSOCKET_OUTPUT_FLAG|
                            wxSOCKET_CONNECTION_FLAG|wxSOCKET_LOST_FLAG) ;

       Enable the event notification:

           $sock->Notify(1) ;

       And only after this use:

           ## note that $handler must be the same that was used in
           ## SetEventHandler
           EVT_SOCKET($handler, $id , sub{...} )

       To make the events easier to use, all the proccess is automatic, and you just use:

           EVT_SOCKET_INPUT($handler , $socket , sub{...} )
           EVT_SOCKET_OUTPUT($handler , $socket , sub{...} )
           EVT_SOCKET_CONNECTION($handler , $socket , sub{...} )
           EVT_SOCKET_LOST($handler , $socket , sub{...} )

           ## This is for the events not used yet by the above:
           EVT_SOCKET_ALL($parent , $socket , sub{...} )

       ** The new way is better to handle more than one socket in the same time too.
          Take a look in the demos.

SEE ALSO
       Wx, The wxWxwindows documentation at <http://www.wxwindows.org/

AUTHOR
       Graciliano M. P. <gm@virtuasites.com.br>

COPYRIGHT
       This program is free software; you can redistribute it and/or modify it under the same terms as Perl
       itself.



perl v5.8.8                                      2004-02-28                                    Wx::Socket(3)

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.