// Purpose: interface of wxIP*address, wxSocket* classes
// Author: wxWidgets team
// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
accepted, it will wait for the next incoming connection to
arrive.
- @warning: This method will block the GUI.
+ @warning This method will block the GUI.
If @a wait is @false, it will try to accept a pending connection
if there is one, but it will always return immediately without blocking
If @a wait is @true, Connect() will wait until the connection
completes.
- @warning: This method will block the GUI.
+ @warning This method will block the GUI.
If @a wait is @false, Connect() will try to establish the connection
and return immediately, without blocking the GUI. When used this way,
Returns the length of the socket address.
*/
int SockAddrLen();
+
+ /**
+ Returns the pointer to the low-level representation of the address.
+
+ This can be used to pass socket address information to a 3rd party
+ library.
+
+ @return
+ Pointer to a sockaddr-derived struct.
+ */
+ const sockaddr *GetAddressData() const;
+
+ /**
+ Returns the length of the buffer retrieved by GetAddressData().
+
+ @return
+ The size of the sockaddr-derived struct corresponding to this
+ address.
+ */
+ int GetAddressDataLen() const;
};
@class wxSocketEvent
This event class contains information about socket events.
+ This kind of events are sent to the event handler specified with
+ wxSocketBase::SetEventHandler.
@beginEventTable{wxSocketEvent}
@event{EVT_SOCKET(id, func)}
- Process a socket event, supplying the member function.
+ Process a socket event, supplying the member function.
@endEventTable
@library{wxnet}
@b wxSOCKET_REUSEADDR can also be used with socket clients to (re)bind to a
particular local port for an outgoing connection.
- This option can have surprising platform dependent behavior, so check the
+ This option can have surprising platform dependent behaviour, so check the
documentation for your platform's implementation of setsockopt().
Note that on BSD-based systems(e.g. Mac OS X), use of
the data.
- @b wxSOCKET_BLOCK has nothing to do with the previous flags and
it controls whether the GUI blocks.
- - @b wxSOCKET_REUSEADDR controls special platform-specific behavior for
+ - @b wxSOCKET_REUSEADDR controls special platform-specific behaviour for
reusing local addresses/ports.
*/
enum
wxSOCKET_NOWAIT = 1, ///< Read/write as much data as possible and return immediately.
wxSOCKET_WAITALL = 2, ///< Wait for all required data to be read/written unless an error occurs.
wxSOCKET_BLOCK = 4, ///< Block the GUI (do not yield) while reading/writing data.
- wxSOCKET_REUSEADDR = 8, ///< Allows the use of an in-use port (wxServerSocket only)
+ wxSOCKET_REUSEADDR = 8, ///< Allows the use of an in-use port.
wxSOCKET_BROADCAST = 16, ///< Switches the socket to broadcast mode
wxSOCKET_NOBIND = 32 ///< Stops the socket from being bound to a specific
///< adapter (normally used in conjunction with
wxFTP or wxHTTP in another thread) you must initialize the sockets from the
main thread by calling Initialize() before creating the other ones.
- @beginEventTable{wxSocketEvent}
+ @beginEventEmissionTable{wxSocketEvent}
@event{EVT_SOCKET(id, func)}
Process a @c wxEVT_SOCKET event.
See @ref wxSocketEventFlags and @ref wxSocketFlags for more info.
Do not destroy a socket using the delete operator directly;
use Destroy() instead. Also, do not create socket objects in the stack.
*/
- ~wxSocketBase();
+ virtual ~wxSocketBase();
/**
Destroys the socket safely.
does anything) but you must call Shutdown() exactly once for every call
to Initialize().
+ This function should only be called from the main thread.
+
@return
@true if the sockets can be used, @false if the initialization
failed and sockets are not available at all.
This function undoes the call to Initialize() and must be called after
every successful call to Initialize().
+
+ This function should only be called from the main thread, just as
+ Initialize().
*/
static void Shutdown();
@return @true if no error happened, @false otherwise.
*/
- bool GetLocal(wxSockAddress& addr) const;
+ virtual bool GetLocal(wxSockAddress& addr) const;
/**
Return the peer address field of the socket.
@return @true if no error happened, @false otherwise.
*/
- bool GetPeer(wxSockAddress& addr) const;
+ virtual bool GetPeer(wxSockAddress& addr) const;
/**
Return the socket timeout in seconds.
complete immediately without blocking (unless the @b wxSOCKET_WAITALL flag
is set, in which case the operation might still block).
*/
- bool IsData() const;
+ bool IsData();
/**
Returns @true if the socket is not connected.
The application must therefore be prepared to handle socket event messages even
after calling Close().
*/
- void Close();
+ virtual bool Close();
/**
Shuts down the writing end of the socket.
be called for client sockets, if it is, @b bind() is called before @b
connect().
*/
- bool SetLocal(const wxIPV4address& local);
+ virtual bool SetLocal(const wxIPV4address& local);
/**
Set the default socket timeout in seconds.
functions if you don't specify a wait interval. Initially, the default
timeout is 10 minutes.
*/
- void SetTimeout(int seconds);
+ void SetTimeout(long seconds);
/**
Put the specified data into the input queue.