]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/socket.tex
Manual fixes
[wxWidgets.git] / docs / latex / wx / socket.tex
index 682df90cd97afd18c1ed96789186fded686cfd6e..eae9022e3cba49b9dbd986c47e9a904ad0c2a921 100644 (file)
@@ -1,3 +1,14 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name:        socket.tex
+%% Purpose:     wxSocket docs
+%% Author:      Guillermo Rodriguez Garcia <guille@iies.es>
+%% Modified by:
+%% Created:     1999
+%% RCS-ID:      $Id$
+%% Copyright:   (c) wxWindows team
+%% Licence:     wxWindows licence
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 \section{\class{wxSocketBase}}\label{wxsocketbase}
 
 \wxheading{Derived from}
@@ -8,7 +19,7 @@
 
 <wx/socket.h>
 
-\wxheading{wxSocket errors}{wxsocketerrs}
+\wxheading{wxSocket errors}
 
 \twocolwidtha{7cm}
 \begin{twocollist}\itemsep=0pt
 \twocolitem{{\bf wxSOCKET\_INVSOCK}}{Invalid socket (uninitialized).}
 \twocolitem{{\bf wxSOCKET\_NOHOST}}{No corresponding host.}
 \twocolitem{{\bf wxSOCKET\_INVPORT}}{Invalid port.}
-\twocolitem{{\bf wxSOCKET\_TRYAGAIN}}{The IO call has a timeout or is in non-blocking mode.}
+\twocolitem{{\bf wxSOCKET\_WOULDBLOCK}}{The socket is non-blocking and the operation would block.}
+\twocolitem{{\bf wxSOCKET\_TIMEDOUT}}{The timeout for this operation expired.}
 \twocolitem{{\bf wxSOCKET\_MEMERR}}{Memory exhausted.}
-\end{twocollist}%
+\end{twocollist}
 
-\wxheading{wxSocket events}{wxsocketevents}
+\wxheading{wxSocket events}
 
 \twocolwidtha{7cm}
 \begin{twocollist}\itemsep=0pt
-\twocolitem{{\bf wxSOCKET\_INPUT}}{Some data are ready to be got.}
+\twocolitem{{\bf wxSOCKET\_INPUT}}{There is data available for reading.}
 \twocolitem{{\bf wxSOCKET\_OUTPUT}}{The socket is ready to be written to.}
-\twocolitem{{\bf wxSOCKET\_CONNECTION}}{Someone want to connect our server.}
-\twocolitem{{\bf wxSOCKET\_LOST}}{The connection has been broken.}
-\twocolitem{{\bf wxSOCKET\_MAX\_EVENT}}{This should never happen but the compiler may complain about it.}
-\end{twocollist}%
+\twocolitem{{\bf wxSOCKET\_CONNECTION}}{Incoming connection (server), or connection establishment (client).}
+\twocolitem{{\bf wxSOCKET\_LOST}}{The connection has been closed.}
+\end{twocollist}
+
+A brief note on how to use these events:
+
+The {\bf wxSOCKET\_INPUT} event will be issued whenever there is data
+available for reading. This will be the case if the input queue was
+empty and new data arrives, or if the application has read some data
+yet there is still more data available. This means that the application
+does not need to read all available data in response to a
+{\bf wxSOCKET\_INPUT} event, as more events will be produced as
+necessary.
+
+The {\bf wxSOCKET\_OUTPUT} event is issued when a socket is first
+connected with \helpref{Connect}{wxsocketclientconnect} or accepted
+with \helpref{Accept}{wxsocketserveraccept}. After that, new
+events will be generated only after an output operation fails
+with {\bf wxSOCKET\_WOULDBLOCK} and buffer space becomes available
+again. This means that the application should assume that it
+can write data to the socket until an {\bf wxSOCKET\_WOULDBLOCK}
+error occurs; after this, whenever the socket becomes writable
+again the application will be notified with another
+{\bf wxSOCKET\_OUTPUT} event.
+
+The {\bf wxSOCKET\_CONNECTION} event is issued when a delayed connection
+request completes succesfully (client) or when a new connection arrives
+at the incoming queue (server).
+
+The {\bf wxSOCKET\_LOST} event is issued when a close indication is
+received for the socket. This means that the connection broke down or
+that it was closed by the peer. Also, this event will be issued if
+a delayed connection request fails.
 
-% ---------------------------------------------------------------------------
-% Event handling
-% ---------------------------------------------------------------------------
 \wxheading{Event handling}
 
 To process events from a socket, use the following event handler macro to direct
- input to member
-functions that take a \helpref{wxSocketEvent}{wxsocketevent} argument.
+input to member functions that take a \helpref{wxSocketEvent}{wxsocketevent} argument.
 
 \twocolwidtha{7cm}%
 \begin{twocollist}\itemsep=0pt
 \twocolitem{{\bf EVT\_SOCKET(id, func)}}{A socket event occured.}
-\end{twocollist}%
+\end{twocollist}
 
-% ---------------------------------------------------------------------------
-% See also ...
-% ---------------------------------------------------------------------------
 \wxheading{See also}
 
-\helpref{wxSocketEvent}{wxsocketevent}\\
-\helpref{wxSocketClient}{wxsocketclient}\\
-\helpref{wxSocketServer}{wxsocketserver}
+\helpref{wxSocketEvent}{wxsocketevent}, 
+\helpref{wxSocketClient}{wxsocketclient}, 
+\helpref{wxSocketServer}{wxsocketserver},
+\helpref{Sockets sample}{samplesockets}
 
 % ---------------------------------------------------------------------------
 % Members
 % ---------------------------------------------------------------------------
+
 \latexignore{\rtfignore{\wxheading{Members}}}
 
 \membersection{wxSocketBase::wxSocketBase}
 
 \func{}{wxSocketBase}{\void}
 
-Default constructor but don't use it, you must use \helpref{wxSocketClient}{wxsocketclient}
+Default constructor. Don't use it; use \helpref{wxSocketClient}{wxsocketclient} 
 or \helpref{wxSocketServer}{wxsocketserver}.
 
 \membersection{wxSocketBase::\destruct{wxSocketBase}}
 
 \func{}{\destruct{wxSocketBase}}{\void}
 
-Destroys the wxSocketBase object.
+Destructor.
 
 % ---------------------------------------------------------------------------
 % State functions
@@ -89,46 +125,98 @@ Destroys the wxSocketBase object.
 
 \twocolwidtha{7cm}
 \begin{twocollist}\itemsep=0pt
-\twocolitem{{\bf wxSocketBase::NONE}}{Normal functionnalities.}
-\twocolitem{{\bf wxSocketBase::NOWAIT}}{Get the available data in the input queue and exit immediately.}
-\twocolitem{{\bf wxSocketBase::WAITALL}}{Wait for all required data unless an error occured.}
-\twocolitem{{\bf wxSocketBase::SPEED}}{Disable the asynchronous IO functionnality.}
+\twocolitem{{\bf wxSOCKET\_NONE}}{Normal functionality.}
+\twocolitem{{\bf wxSOCKET\_NOWAIT}}{Read/write as much data as possible and return immediately.}
+\twocolitem{{\bf wxSOCKET\_WAITALL}}{Wait for all required data to be read/written unless an error occurs.}
+\twocolitem{{\bf wxSOCKET\_BLOCK}}{Block the GUI (do not yield) while reading/writing data.}
 \end{twocollist}
 
+A brief overview on how to use these flags follows.
+
+If no flag is specified (this is the same as {\bf wxSOCKET\_NONE}),
+IO calls will return after some data has been read or written, even
+when the transfer might not be complete. This is the same as issuing
+exactly one blocking low-level call to recv() or send(). Note that
+{\it blocking} here refers to when the function returns, not to whether
+the GUI blocks during this time.
+
+If {\bf wxSOCKET\_NOWAIT} is specified, IO calls will return immediately.
+Read operations will retrieve only available data. Write operations will
+write as much data as possible, depending on how much space is available
+in the output buffer. This is the same as issuing exactly one nonblocking
+low-level call to recv() or send(). Note that {\it nonblocking} here
+refers to when the function returns, not to whether the GUI blocks during
+this time.
+
+If {\bf wxSOCKET\_WAITALL} is specified, IO calls won't return until ALL
+the data has been read or written (or until an error occurs), blocking if
+necessary, and issuing several low level calls if necessary. This is the
+same as having a loop which makes as many blocking low-level calls to
+recv() or send() as needed so as to transfer all the data. Note that
+{\it blocking} here refers to when the function returns, not to whether
+the GUI blocks during this time.
+
+The {\bf wxSOCKET\_BLOCK} flag controls whether the GUI blocks during
+IO operations. If this flag is specified, the socket will not yield
+during IO calls, so the GUI will remain blocked until the operation
+completes. If it is not used, then the application must take extra
+care to avoid unwanted reentrance.
+
+So:
+
+{\bf wxSOCKET\_NONE} will try to read at least SOME data, no matter how much.
+
+{\bf wxSOCKET\_NOWAIT} will always return immediately, even if it cannot
+read or write ANY data.
+
+{\bf wxSOCKET\_WAITALL} will only return when it has read or written ALL
+the data.
+
+{\bf wxSOCKET\_BLOCK} has nothing to do with the previous flags and
+it controls whether the GUI blocks.
+
 %
 % SetNotify
 %
 \membersection{wxSocketBase::SetNotify}\label{wxsocketbasesetnotify}
 
-\func{void}{SetNotify}{\param{wxSocketEventFlags}{ event_flags}}
+\func{void}{SetNotify}{\param{wxSocketEventFlags}{ flags}}
 
-SetNotify setups which socket events are to be sent to the event handler.
-You specify in parameters a mask of wxSocket events. The flags is:
+SetNotify specifies which socket events are to be sent to the event handler.
+The {\it flags} parameter is a combination of flags ORed toghether. The
+following flags can be used:
 
 \twocolwidtha{7cm}
 \begin{twocollist}\itemsep=0pt
-\twocolitem{{\bf wxSOCKET\_INPUT\_FLAG}}{to receive wxSOCKET_INPUT}
-\twocolitem{{\bf wxSOCKET\_OUTPUT\_FLAG}}{to receive wxSOCKET_OUTPUT}
-\twocolitem{{\bf wxSOCKET\_CONNECTION\_FLAG}}{to receive wxSOCKET_CONNECTION}
-\twocolitem{{\bf wxSOCKET\_LOST\_FLAG}}{to receive wxSOCKET_LOST}
-\end{twocollist}%
+\twocolitem{{\bf wxSOCKET\_INPUT\_FLAG}}{to receive wxSOCKET\_INPUT}
+\twocolitem{{\bf wxSOCKET\_OUTPUT\_FLAG}}{to receive wxSOCKET\_OUTPUT}
+\twocolitem{{\bf wxSOCKET\_CONNECTION\_FLAG}}{to receive wxSOCKET\_CONNECTION}
+\twocolitem{{\bf wxSOCKET\_LOST\_FLAG}}{to receive wxSOCKET\_LOST}
+\end{twocollist}
 
 For example:
+
 \begin{verbatim}
-  sock.SetNotify(wxSOCKET\_INPUT\_FLAG | wxSOCKET\_LOST\_FLAG);
+  sock.SetNotify(wxSOCKET_INPUT_FLAG | wxSOCKET_LOST_FLAG);
+  sock.Notify(TRUE);
 \end{verbatim}
-In this example, the user will be notified about incoming socket datas and
-a broken connection.
 
-For more information on socket events see \helpref{wxSocket events}{wxsocketevents}.
+In this example, the user will be notified about incoming socket data and
+whenever the connection is closed.
+
+For more information on socket events see \helpref{wxSocket events}{wxsocketbase}.
 
 %
 % SetTimeout
 %
-\membersection{wxSocketBase::SetTimeout}{wxsocketbasesettimeout}
+\membersection{wxSocketBase::SetTimeout}\label{wxsocketbasesettimeout}
+
 \func{void}{SetTimeout}{\param{int }{seconds}}
 
-This function sets the socket timeout in seconds.
+This function sets the default socket timeout in seconds. This timeout
+applies to all IO calls, and also to the \helpref{Wait}{wxsocketbasewait}
+family of functions if you don't specify a wait interval. Initially, the
+default is set to 10 minutes.
 
 %
 % Notify
@@ -137,8 +225,11 @@ This function sets the socket timeout in seconds.
 
 \func{void}{Notify}{\param{bool}{ notify}}
 
-Notify will enable (notify is TRUE) or disable (notify is FALSE) the propagation
-of socket events.
+According to the {\it notify} value, this function enables
+or disables socket events. If {\it notify} is TRUE, the events
+configured with \helpref{SetNotify}{wxsocketbasesetnotify} will
+be sent to the application. If {\it notify} is FALSE; no events
+will be sent.
 
 % 
 % Ok
@@ -155,9 +246,12 @@ cases.
 
 \constfunc{bool}{Error}{\void}
 
-Returns TRUE if an error occured.
+Returns TRUE if an error occured in the last IO operation.
 
-\membersection{wxSocketBase::IsConnected}\label{wxsocketbaseconnected}
+Use this function to check for an error condition after one of the
+following calls: Read, Write, ReadMsg, WriteMsg, Peek, Unread, Discard.
+
+\membersection{wxSocketBase::IsConnected}\label{wxsocketbaseisconnected}
 
 \constfunc{bool}{IsConnected}{\void}
 
@@ -167,19 +261,13 @@ Returns TRUE if the socket is connected.
 
 \constfunc{bool}{IsData}{\void}
 
-Returns TRUE if some data is arrived on the socket
+Returns TRUE if there is data available to be read
 
 \membersection{wxSocketBase::IsDisconnected}\label{wxsocketbasedisconnected}
 
 \constfunc{bool}{IsDisconnected}{\void}
 
-Returns TRUE if the socket is disconnected.
-
-\membersection{wxSocketBase::IsNoWait}\label{wxsocketbasenowait}
-
-\constfunc{bool}{IsNoWait}{\void}
-
-Returns TRUE if the socket mustn't wait.
+Returns TRUE if the socket is not connected.
 
 \membersection{wxSocketBase::LastCount}\label{wxsocketbaselastcount}
 
@@ -187,11 +275,22 @@ Returns TRUE if the socket mustn't wait.
 
 Returns the number of bytes read or written by the last IO call.
 
+Use this function to get the number of bytes actually transferred
+after using one of the following IO calls: Read, Write, ReadMsg,
+WriteMsg, Peek, Unread, Discard.
+
 \membersection{wxSocketBase::LastError}\label{wxsocketbaselasterror}
 
 \constfunc{wxSocketError}{LastError}{\void}
 
-Returns the last occured wxSocket error. See \helpref{wxSocket errors}{wxsocketerrs}.
+Returns the last wxSocket error. See \helpref{wxSocket errors}{wxsocketbase}.
+
+Please note that this function merely returns the last error code,
+but it should not be used to determine if an error has occured (this
+is because successful operations do not change the LastError value).
+Use \helpref{Error}{wxsocketbaseerror} first, in order to determine
+if the last IO call failed. If this returns TRUE, use LastError()
+to discover the cause of the error.
 
 % ---------------------------------------------------------------------------
 % IO calls
@@ -203,8 +302,12 @@ Returns the last occured wxSocket error. See \helpref{wxSocket errors}{wxsockete
 
 \func{wxSocketBase\&}{Peek}{\param{char *}{ buffer}, \param{wxUint32}{ nbytes}}
 
-This function peeks a buffer of {\it nbytes} bytes from the socket. Peeking a buffer
-doesn't delete it from the system socket in-queue.
+This function peeks a buffer of {\it nbytes} bytes from the socket.
+Peeking a buffer doesn't delete it from the socket input queue.
+
+Use \helpref{LastCount}{wxsocketbaselastcount} to verify the number of bytes actually peeked.
+
+Use \helpref{Error}{wxsocketbaseerror} to determine if the operation succeeded.
 
 \wxheading{Parameters}
 
@@ -216,11 +319,17 @@ doesn't delete it from the system socket in-queue.
 
 Returns a reference to the current object.
 
+\wxheading{Remark/Warning}
+
+The exact behaviour of wxSocketBase::Peek() depends on the combination
+of flags being used. For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}
+
 \wxheading{See also}
 
-\helpref{wxSocketBase::Error}{wxsocketbaseerror}\\
-\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount}\\
-\helpref{wxSocketBase::LastError}{wxsocketbaselasterror}
+\helpref{wxSocketBase::Error}{wxsocketbaseerror}, 
+\helpref{wxSocketBase::LastError}{wxsocketbaselasterror}, 
+\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount}, 
+\helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}
 
 %
 % Read
@@ -231,6 +340,10 @@ Returns a reference to the current object.
 
 This function reads a buffer of {\it nbytes} bytes from the socket.
 
+Use \helpref{LastCount}{wxsocketbaselastcount} to verify the number of bytes actually read.
+
+Use \helpref{Error}{wxsocketbaseerror} to determine if the operation succeeded.
+
 \wxheading{Parameters}
 
 \docparam{buffer}{Buffer where to put read data.}
@@ -243,23 +356,15 @@ Returns a reference to the current object.
 
 \wxheading{Remark/Warning}
 
-By default, Read uses an internal asynchronous manager: it will send data when
-the socket requests them. It is particularly interesting when you enter a long
-data transfer (e.g. a big file, an image, ...). But it is also buggy when you
-simply discuss with the peer using user data. In this case, wxSocket prepares
-itself to send data (Write wait for them to be sent) and during a GUI refresh
-the user enters new data, which involves a new Read call though the previous
-isn't finished. Well, in most cases it can work but it might fail too.
-So I advise you to use the SPEED flag, which disables the asynchronous manager,
-when you just want to discuss with the peer.
-
-This remark is also valid for all IO call.
+The exact behaviour of wxSocketBase::Read() depends on the combination
+of flags being used. For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}.
 
 \wxheading{See also}
 
-\helpref{wxSocketBase::Error}{wxsocketbaseerror},
- \helpref{wxSocketBase::LastCount}{wxsocketbaselastcount},
- \helpref{wxSocketBase::LastError}{wxsocketbaselasterror}
+\helpref{wxSocketBase::Error}{wxsocketbaseerror}, 
+\helpref{wxSocketBase::LastError}{wxsocketbaselasterror}, 
+\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount}, 
+\helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}
 
 %
 % Write
@@ -268,23 +373,15 @@ This remark is also valid for all IO call.
 
 \func{wxSocketBase\&}{Write}{\param{const char *}{ buffer}, \param{wxUint32}{ nbytes}}
 
-This function writes a buffer of {\it nbytes} bytes from the socket.
+This function writes a buffer of {\it nbytes} bytes to the socket.
 
-\wxheading{Remark/Warning}
+Use \helpref{LastCount}{wxsocketbaselastcount} to verify the number of bytes actually written.
 
-By default, Write uses an internal asynchronous manager: it will send data when
-the socket requests them. It is particularly interesting when you enter a long
-data transfer (e.g. a big file, an image, ...). But it is also buggy when you
-simply discuss with the peer using user data. In this case, wxSocket prepares
-itself to send data (Write wait for them to be sent) and during a GUI refresh
-the user enters new data, which involves a new Write call though the previous
-isn't finished. Well, in most cases it can work but it might fail too.  
-So I advise you to use the SPEED flag, which disables the asynchronous manager,
-when you just want to discuss with the peer.
+Use \helpref{Error}{wxsocketbaseerror} to determine if the operation succeeded.
 
 \wxheading{Parameters}
 
-\docparam{buffer}{Buffer where to get the data to write.}
+\docparam{buffer}{Buffer with the data to be sent.}
 
 \docparam{nbytes}{Number of bytes.}
 
@@ -292,11 +389,17 @@ when you just want to discuss with the peer.
 
 Returns a reference to the current object.
 
+\wxheading{Remark/Warning}
+
+The exact behaviour of wxSocketBase::Write() depends on the combination
+of flags being used. For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}.
+
 \wxheading{See also}
 
-\helpref{wxSocketBase::Error}{wxsocketbaseerror}\\
-\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount}\\
-\helpref{wxSocketBase::LastError}{wxsocketbaselasterror}
+\helpref{wxSocketBase::Error}{wxsocketbaseerror}, 
+\helpref{wxSocketBase::LastError}{wxsocketbaselasterror}, 
+\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount}, 
+\helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}
 
 %
 % WriteMsg
@@ -305,25 +408,39 @@ Returns a reference to the current object.
 
 \func{wxSocketBase\&}{WriteMsg}{\param{const char *}{ buffer}, \param{wxUint32}{ nbytes}}
 
-This function writes a buffer of {\it nbytes} bytes from the socket. But it
-writes a short header before so that ReadMsg can alloc the right size for
-the buffer. So a buffer sent with WriteMsg {\bf must} be read with ReadMsg.
+This function writes a buffer of {\it nbytes} bytes from the socket, but it
+writes a short header before so that \helpref{ReadMsg}{wxsocketbasereadmsg}
+knows how much data should it actually read. So, a buffer sent with WriteMsg
+{\bf must} be read with ReadMsg. This function always waits for the entire
+buffer to be sent, unless an error occurs.
+
+Use \helpref{LastCount}{wxsocketbaselastcount} to verify the number of bytes actually written.
+
+Use \helpref{Error}{wxsocketbaseerror} to determine if the operation succeeded.
 
 \wxheading{Parameters}
 
-\docparam{buffer}{Buffer where to put data peeked.}
+\docparam{buffer}{Buffer with the data to be sent.}
 
-\docparam{nbytes}{Number of bytes.}
+\docparam{nbytes}{Number of bytes to send.}
 
 \wxheading{Return value}
 
 Returns a reference to the current object.
 
+\wxheading{Remark/Warning}
+
+wxSocketBase::WriteMsg() will behave as if the {\bf wxSOCKET\_WAITALL} flag
+was always set and it will always ignore the {\bf wxSOCKET\_NOWAIT} flag.
+The exact behaviour of WriteMsg depends on the {\bf wxSOCKET\_BLOCK} flag.
+For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}.
+
 \wxheading{See also}
 
-\helpref{wxSocketBase::Error}{wxsocketbaseerror}\\
-\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount}\\
-\helpref{wxSocketBase::LastError}{wxsocketbaselasterror}\\
+\helpref{wxSocketBase::Error}{wxsocketbaseerror}, 
+\helpref{wxSocketBase::LastError}{wxsocketbaselasterror}, 
+\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount}, 
+\helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}, 
 \helpref{wxSocketBase::ReadMsg}{wxsocketbasereadmsg}
 
 %
@@ -333,25 +450,38 @@ Returns a reference to the current object.
 
 \func{wxSocketBase\&}{ReadMsg}{\param{char *}{ buffer}, \param{wxUint32}{ nbytes}}
 
-This function reads a buffer sent by WriteMsg on a socket. If the buffer passed
-to the function isn't big enough, the function filled it and then discard the
-bytes left. This function always wait for the buffer to be entirely filled.
+This function reads a buffer sent by \helpref{WriteMsg}{wxsocketbasewritemsg}
+on a socket. If the buffer passed to the function isn't big enough, the
+remaining bytes will be discarded. This function always waits for the
+buffer to be entirely filled, unless an error occurs.
+
+Use \helpref{LastCount}{wxsocketbaselastcount} to verify the number of bytes actually read.
+
+Use \helpref{Error}{wxsocketbaseerror} to determine if the operation succeeded.
 
 \wxheading{Parameters}
 
 \docparam{buffer}{Buffer where to put read data.}
 
-\docparam{nbytes}{Number of bytes allocated for the buffer.}
+\docparam{nbytes}{Size of the buffer.}
 
 \wxheading{Return value}
 
 Returns a reference to the current object.
 
+\wxheading{Remark/Warning}
+
+wxSocketBase::ReadMsg() will behave as if the {\bf wxSOCKET\_WAITALL} flag
+was always set and it will always ignore the {\bf wxSOCKET\_NOWAIT} flag.
+The exact behaviour of ReadMsg depends on the {\bf wxSOCKET\_BLOCK} flag.
+For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}.
+
 \wxheading{See also}
 
-\helpref{wxSocketBase::Error}{wxsocketbaseerror}\\
-\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount}\\
-\helpref{wxSocketBase::LastError}{wxsocketbaselasterror}\\
+\helpref{wxSocketBase::Error}{wxsocketbaseerror}, 
+\helpref{wxSocketBase::LastError}{wxsocketbaselasterror}, 
+\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount}, 
+\helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}, 
 \helpref{wxSocketBase::WriteMsg}{wxsocketbasewritemsg}
 
 %
@@ -361,9 +491,12 @@ Returns a reference to the current object.
 
 \func{wxSocketBase\&}{Unread}{\param{const char *}{ buffer}, \param{wxUint32}{ nbytes}}
 
-This function unreads a buffer. It means that the buffer is put in the top
-of the incoming queue. But, it is put also at the end of all unread buffers.
-It is useful for sockets because we can't seek it.
+This function unreads a buffer. That is, the data in the buffer is put back
+in the incoming queue. This function is not affected by wxSocket flags.
+
+If you use \helpref{LastCount}{wxsocketbaselastcount}, it will always return {\it nbytes}.
+
+If you use \helpref{Error}{wxsocketbaseerror}, it will always return FALSE.
 
 \wxheading{Parameters}
 
@@ -377,8 +510,8 @@ Returns a reference to the current object.
 
 \wxheading{See also}
 
-\helpref{wxSocketBase::Error}{wxsocketbaseerror}\\
-\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount}\\
+\helpref{wxSocketBase::Error}{wxsocketbaseerror}
+\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount}
 \helpref{wxSocketBase::LastError}{wxsocketbaselasterror}
 
 %
@@ -389,7 +522,11 @@ Returns a reference to the current object.
 \func{wxSocketBase\&}{Discard}{\void}
 
 This function simply deletes all bytes in the incoming queue. This function
-doesn't wait.
+always returns immediately and its operation is not affected by IO flags.
+
+Use \helpref{LastCount}{wxsocketbaselastcount} to verify the number of bytes actually discarded.
+
+If you use \helpref{Error}{wxsocketbaseerror}, it will always return FALSE.
 
 % ---------------------------------------------------------------------------
 % Wait functions
@@ -398,24 +535,35 @@ doesn't wait.
 
 \func{bool}{Wait}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
 
-This function waits for an event: it could be an incoming byte, the possibility
-for the client to write, a lost connection, an incoming connection, an
-established connection.
+This function waits until one of the following conditions is TRUE. Note
+that it is recommended to use the individual Wait functions to wait for
+the required condition, instead of this one.
+                                            
+\begin{itemize}
+\item There is data available for reading.
+\item The socket becomes writable.
+\item An ongoing connection request has completed (only for clients)
+\item An incoming connection request has arrived (only for servers)
+\item The connection has been closed.
+\end{itemize}
 
 \wxheading{Parameters}
 
-\docparam{seconds}{Number of seconds to wait. By default, it waits infinitely.}
+\docparam{seconds}{Number of seconds to wait.
+If -1, it will wait for the default timeout,
+as set with \helpref{SetTimeout}{wxsocketbasesettimeout}.}
 
 \docparam{millisecond}{Number of milliseconds to wait.}
 
 \wxheading{Return value}
 
-Returns TRUE if an event occured, FALSE if the timeout was reached.
+Returns TRUE when any of the above conditions is satisfied,
+FALSE if the timeout was reached.
 
 \wxheading{See also}
 
-\helpref{wxSocketBase::WaitForRead}{wxsocketbasewaitforread}\\
-\helpref{wxSocketBase::WaitForWrite}{wxsocketbasewaitforwrite}\\
+\helpref{wxSocketBase::WaitForRead}{wxsocketbasewaitforread}
+\helpref{wxSocketBase::WaitForWrite}{wxsocketbasewaitforwrite}
 \helpref{wxSocketBase::WaitForLost}{wxsocketbasewaitforlost}
 
 %
@@ -425,22 +573,26 @@ Returns TRUE if an event occured, FALSE if the timeout was reached.
 
 \func{bool}{WaitForRead}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
 
-This function waits for a read event.
+This function waits until there is data available to be read, or until
+an error occurs.
 
 \wxheading{Parameters}
 
-\docparam{seconds}{Number of seconds to wait. By default, it waits infinitely.}
+\docparam{seconds}{Number of seconds to wait.
+If -1, it will wait for the default timeout,
+as set with \helpref{SetTimeout}{wxsocketbasesettimeout}.}
 
 \docparam{millisecond}{Number of milliseconds to wait.}
 
 \wxheading{Return value}
 
-Returns TRUE if a byte arrived, FALSE if the timeout was reached.
+Returns TRUE if there is data to be read, FALSE if the timeout was reached
+or an error occured.
 
 \wxheading{See also}
 
-\helpref{wxSocketBase::Wait}{wxsocketbasewait}\\
-\helpref{wxSocketBase::WaitForWrite}{wxsocketbasewaitforwrite}\\
+\helpref{wxSocketBase::Wait}{wxsocketbasewait}
+\helpref{wxSocketBase::WaitForWrite}{wxsocketbasewaitforwrite}
 \helpref{wxSocketBase::WaitForLost}{wxsocketbasewaitforlost}
 
 %
@@ -450,22 +602,26 @@ Returns TRUE if a byte arrived, FALSE if the timeout was reached.
 
 \func{bool}{WaitForWrite}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
 
-This function waits for a write event.
+This function waits until the socket is ready to send data,
+or until an error occurs.
 
 \wxheading{Parameters}
 
-\docparam{seconds}{Number of seconds to wait. By default, it waits infinitely.}
+\docparam{seconds}{Number of seconds to wait.
+If -1, it will wait for the default timeout,
+as set with \helpref{SetTimeout}{wxsocketbasesettimeout}.}
 
 \docparam{millisecond}{Number of milliseconds to wait.}
 
 \wxheading{Return value}
 
-Returns TRUE if a write event occured, FALSE if the timeout was reached.
+Returns TRUE if you can write to the socket, FALSE if the timeout was
+reached or an error occured.
 
 \wxheading{See also}
 
-\helpref{wxSocketBase::Wait}{wxsocketbasewait}\\
-\helpref{wxSocketBase::WaitForRead}{wxsocketbasewaitforread}\\
+\helpref{wxSocketBase::Wait}{wxsocketbasewait}
+\helpref{wxSocketBase::WaitForRead}{wxsocketbasewaitforread}
 \helpref{wxSocketBase::WaitForLost}{wxsocketbasewaitforlost}
 
 %
@@ -475,25 +631,31 @@ Returns TRUE if a write event occured, FALSE if the timeout was reached.
 
 \func{bool}{Wait}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
 
-This function waits for a "lost" event. For instance, the peer may have closed
-the connection, or the connection may have been broken.
+This function waits until the connection is lost. This may happen if
+the peer gracefully closes the connection or if the connection breaks.
 
 \wxheading{Parameters}
 
-\docparam{seconds}{Number of seconds to wait. By default, it waits infinitely.}
+\docparam{seconds}{Number of seconds to wait.
+If -1, it will wait for the default timeout,
+as set with \helpref{SetTimeout}{wxsocketbasesettimeout}.}
 
 \docparam{millisecond}{Number of milliseconds to wait.}
 
 \wxheading{Return value}
 
-Returns TRUE if a "lost" event occured, FALSE if the timeout was reached.
+Returns TRUE if the connection was lost, FALSE if the timeout was reached.
 
 \wxheading{See also}
 
-\helpref{wxSocketBase::WaitForRead}{wxsocketbasewaitforread}\\
-\helpref{wxSocketBase::WaitForWrite}{wxsocketbasewaitforwrite}\\
+\helpref{wxSocketBase::WaitForRead}{wxsocketbasewaitforread}
+\helpref{wxSocketBase::WaitForWrite}{wxsocketbasewaitforwrite}
 \helpref{wxSocketBase::WaitForLost}{wxsocketbasewaitforlost}
 
+% ---------------------------------------------------------------------------
+% Socket state
+% ---------------------------------------------------------------------------
+
 %
 % RestoreState
 %
@@ -501,15 +663,15 @@ Returns TRUE if a "lost" event occured, FALSE if the timeout was reached.
 
 \func{void}{RestoreState}{\void}
 
-This function restores a previously saved state.
+This function restores the previous state of the socket, as saved
+with \helpref{SaveState}{wxsocketbasesavestate}
+
+Calls to SaveState and RestoreState can be nested.
 
 \wxheading{See also}
 
 \helpref{wxSocketBase::SaveState}{wxsocketbasesavestate}
 
-% ---------------------------------------------------------------------------
-% Socket state
-% ---------------------------------------------------------------------------
 %
 % SaveState
 %
@@ -517,32 +679,25 @@ This function restores a previously saved state.
 
 \func{void}{SaveState}{\void}
 
-This function saves the current state of the socket object in a stack:
-actually it saves all flags and the state of the asynchronous callbacks. 
+This function saves the current state of the socket in a stack. Socket
+state includes flags, as set with \helpref{SetFlags}{wxsocketbasesetflags},
+event mask, as set with \helpref{SetNotify}{wxsocketbasesetnotify} and
+\helpref{Notify}{wxsocketbasenotify}, and current settings for the
+asynchronous callbacks, as set with \helpref{Callback}{wxsocketbasecallback}
+and \helpref{CallbackData}{wxsocketbasecallbackdata}.
 
-\wxheading{See also}
-
-%
-% SaveState
-%
-
-\helpref{wxSocketBase::RestoreState}{wxsocketbaserestorestate}
-\membersection{wxSocketBase::RestoreState}\label{wxsocketbaserestorestate}
-
-\func{void}{RestoreState}{\void}
-
-This function restores the previous state of the socket (include flags,
-notify flags, notify state, C callback function and data).
+Calls to SaveState and RestoreState can be nested.
 
 \wxheading{See also}
 
-\helpref{wxSocketBase::SaveState}{wxsocketbasesavestate}
+\helpref{wxSocketBase::RestoreState}{wxsocketbaserestorestate}
 
 %
 % GetLocal
 %
-\membersection{wxSocketBase::GetLocal}{wxsocketbasegetlocal}
-\constfunc{bool}{GetLocal}{\param{wxSockAddress\& }{addr_man}}
+\membersection{wxSocketBase::GetLocal}\label{wxsocketbasegetlocal}
+
+\constfunc{bool}{GetLocal}{\param{wxSockAddress\& }{addr\_man}}
 
 This function returns the local address field of the socket. The local
 address field contains the complete local address of the socket (local
@@ -555,8 +710,9 @@ It returns TRUE if no errors happened, FALSE otherwise.
 %
 % GetPeer
 %
-\membersection{wxSocketBase::GetPeer}{wxsocketbasegetlocal}
-\constfunc{bool}{GetPeer}{\param{wxSockAddress\& }{addr_man}}
+\membersection{wxSocketBase::GetPeer}\label{wxsocketbasegetpeer}
+
+\constfunc{bool}{GetPeer}{\param{wxSockAddress\& }{addr\_man}}
 
 This function returns the peer address field of the socket. The peer 
 address field contains the complete peer host address of the socket
@@ -573,7 +729,15 @@ It returns TRUE if no errors happened, FALSE otherwise.
 
 \func{void}{SetEventHandler}{\param{wxEvtHandler\&}{ evt\_hdlr}, \param{int}{ id = -1}}
 
-Sets an event handler to be called when a socket event occured.
+Sets an event handler to be called when a socket event occurs. The
+handler will be called for those events for which notification is
+enabled with \helpref{SetNotify}{wxsocketbasesetnotify} and
+\helpref{Notify}{wxsocketbasenotify}.
+
+You can also specify a callback function to be called when an event
+occurs, although if possible, events should be used instead of callbacks.
+See \helpref{Callback}{wxsocketbasecallback} and
+\helpref{CallbackData}{wxsocketbasecallbackdata}.
 
 \wxheading{Parameters}
 
@@ -583,43 +747,61 @@ Sets an event handler to be called when a socket event occured.
 
 \wxheading{See also}
 
-\helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify}
-\helpref{wxSocketBase::Notify}{wxsocketbasenotify}
-\helpref{wxSocketEvent}{wxsocketevent}
-\helpref{wxEvtHandler}{wxevthandler}
+\helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify}, 
+\helpref{wxSocketBase::Notify}{wxsocketbasenotify}, 
+\helpref{wxSocketEvent}{wxsocketevent}, 
+\helpref{wxEvtHandler}{wxevthandler}, 
+\helpref{wxSocketBase::Callback}{wxsocketbasecallback}, 
+\helpref{wxSocketBase::CallbackData}{wxsocketbasecallbackdata}
 
 \membersection{wxSocketBase::Callback}\label{wxsocketbasecallback}
 
 \func{wxSocketBase::wxSockCbk}{Callback}{\param{wxSocketBase::wxSockCbk}{ callback}}
 
-wxSocket event handler can call C callback. This function allows you to set it.
-The format of the callback is as followed:
+You can setup a callback function to be called when an event occurs.
+The function will be called only for those events for which notification
+has been enabled with \helpref{Notify}{wxsocketbasenotify} and
+\helpref{SetNotify}{wxsocketbasesetnotify}. The prototype of the
+callback must be as follows:
+
 \begin{verbatim}
-void SocketCallback(wxSocketBase& sock,wxSocketNotify evt,char *cdata);
+void SocketCallback(wxSocketBase& sock, wxSocketNotify evt, char *cdata);
 \end{verbatim}
 
-The first parameter reminds you of the caller socket. The second parameter
-informs you about the current event (See \helpref{wxSocket events}{wxsocketevents}).
-The third parameters is the client data you specified using \helpref{CallbackData}{wxsocketcallbackdata}.
+The first parameter is a reference to the socket object in which the
+event occured. The second parameter tells you which event occured.
+(See \helpref{wxSocket events}{wxsocketbase}). The third parameter
+is the user data you specified using
+\helpref{CallbackData}{wxsocketbasecallbackdata}.
+
+Note that events are preferred over callbacks where possible.
 
 \wxheading{Return value}
 
-It returns the previous callback.
+A pointer to the previous callback.
 
 \wxheading{See also}
 
-\helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify}
+\helpref{wxSocketBase::CallbackData}{wxsocketbasecallbackdata}, 
+\helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify}, 
 \helpref{wxSocketBase::Notify}{wxsocketbasenotify}
 
-\membersection{wxSocketBase::CallbackData}\label{wxsocketcallbackdata}
+\membersection{wxSocketBase::CallbackData}\label{wxsocketbasecallbackdata}
 
 \func{char *}{CallbackData}{\param{char *}{cdata}}
 
-This function sets the the client data which will be passed to a \helpref{C callback}{wxsocketcallback}.
+This function sets the the user data which will be passed to a
+callback function set via \helpref{Callback}{wxsocketbasecallback}.
+
+Note that events are preferred over callbacks where possible.
 
 \wxheading{Return value}
 
-This function returns the old value of the client data pointer.
+A pointer to the previous user data.
+
+\helpref{wxSocketBase::Callback}{wxsocketbasecallback}, 
+\helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify}, 
+\helpref{wxSocketBase::Notify}{wxsocketbasenotify}
 
 % ---------------------------------------------------------------------------
 % CLASS wxSocketClient
@@ -644,7 +826,7 @@ This function returns the old value of the client data pointer.
 
 \func{}{wxSocketClient}{\param{wxSockFlags}{ flags = wxSocketBase::NONE}}
 
-Constructs a new wxSocketClient.
+Constructor.
 
 \wxheading{Parameters}
 
@@ -657,7 +839,7 @@ Constructs a new wxSocketClient.
 
 \func{}{\destruct{wxSocketClient}}{\void}
 
-Destroys a wxSocketClient object.
+Destructor.
 
 %
 % Connect
@@ -666,22 +848,41 @@ Destroys a wxSocketClient object.
 
 \func{bool}{Connect}{\param{wxSockAddress\&}{ address}, \param{bool}{ wait = TRUE}}
 
-Connects to a server using the specified address. If {\it wait} is TRUE, Connect
-will wait for the socket ready to send or receive data.
+Connects to a server using the specified address.
+
+If {\it wait} is TRUE, Connect will wait until the connection completes.
+{\bf Warning:} This will block the GUI.
+
+If {\it wait} is FALSE, Connect will try to establish the connection and
+return immediately, without blocking the GUI. When used this way, even if
+Connect returns FALSE, the connection request can be completed later.
+To detect this, use \helpref{WaitOnConnect}{wxsocketclientwaitonconnect},
+or catch {\bf wxSOCKET\_CONNECTION} events (for successful establishment)
+and {\bf wxSOCKET\_LOST} events (for connection failure).
 
 \wxheading{Parameters}
 
 \docparam{address}{Address of the server.}
 
-\docparam{wait}{If true, waits for the connection to be ready.}
+\docparam{wait}{If TRUE, waits for the connection to complete.}
 
 \wxheading{Return value}
 
 Returns TRUE if the connection is established and no error occurs.
 
+If {\it wait} was TRUE, and Connect returns FALSE, an error occured
+and the connection failed.
+
+If {\it wait} was FALSE, and Connect returns FALSE, you should still
+be prepared to handle the completion of this connection request, either
+with \helpref{WaitOnConnect}{wxsocketclientwaitonconnect} or by watching
+{\bf wxSOCKET\_CONNECTION} and {\bf wxSOCKET\_LOST} events.
+
 \wxheading{See also}
 
-\helpref{wxSocketClient::WaitOnConnect}{wxsocketclientwaitonconnect}
+\helpref{wxSocketClient::WaitOnConnect}{wxsocketclientwaitonconnect}, 
+\helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify}, 
+\helpref{wxSocketBase::Notify}{wxsocketbasenotify}
 
 %
 % WaitOnConnect
@@ -690,11 +891,29 @@ Returns TRUE if the connection is established and no error occurs.
 
 \func{bool}{WaitOnConnect}{\param{long}{ seconds = -1}, \param{long}{ milliseconds = 0}}
 
-Wait for a "connect" event.
+Wait until a connection request completes, or until the specified timeout
+elapses. Use this function after issuing a call to \helpref{Connect}{wxsocketclientconnect}
+with {\it wait} set to FALSE.
+
+\wxheading{Parameters}
+
+\docparam{seconds}{Number of seconds to wait.
+If -1, it will wait for the default timeout,
+as set with \helpref{SetTimeout}{wxsocketbasesettimeout}.}
+
+\docparam{millisecond}{Number of milliseconds to wait.}
+
+\wxheading{Return value}
+
+If the connection is succesfully established, returns TRUE.
+
+If the timeout expires, or if the connection fails, returns FALSE.
+To distinguish between these two conditions, use \helpref{IsConnected}{wxsocketbaseisconnected}
 
 \wxheading{See also}
 
-\helpref{wxSocketBase::Wait}{wxsocketbasewait} for a detailed description.
+\helpref{wxSocketClient::Connect}{wxsocketclientconnect},
+\helpref{wxSocketBase::IsConnected}{wxsocketbaseisconnected}
 
 % ---------------------------------------------------------------------------
 % CLASS: wxSocketEvent
@@ -719,12 +938,12 @@ functions that take a wxSocketEvent argument.
 \twocolwidtha{7cm}
 \begin{twocollist}\itemsep=0pt
 \twocolitem{{\bf EVT\_SOCKET(id, func)}}{Process a socket event, supplying the member function.}
-\end{twocollist}%
+\end{twocollist}
 
 \wxheading{See also}
 
-\helpref{wxSocketBase}{wxsocketbase},\rtfsp
-\helpref{wxSocketClient}{wxsocketclient},\rtfsp
+\helpref{wxSocketBase}{wxsocketbase}, 
+\helpref{wxSocketClient}{wxsocketclient}, 
 \helpref{wxSocketServer}{wxsocketserver}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
@@ -735,6 +954,13 @@ functions that take a wxSocketEvent argument.
 
 Constructor.
 
+\membersection{wxSocketEvent::Socket}\label{wxsocketeventsocket}
+
+\constfunc{wxSocketBase *}{Socket}{\void}
+
+Returns the socket object to which this event refers to. This makes
+it possible to use the same event handler for different sockets.
+
 \membersection{wxSocketEvent::SocketEvent}\label{wxsocketeventsocketevent}
 
 \constfunc{wxSocketNotify}{SocketEvent}{\void}
@@ -766,7 +992,9 @@ Returns the socket event type.
 
 \func{}{wxSocketServer}{\param{wxSockAddress\&}{ address}, \param{wxSockFlags}{ flags = wxSocketBase::NONE}}
 
-Constructs a new wxSocketServer.
+Constructs a new server and tries to bind to the specified {\it address}.
+Before trying to accept new connections, test whether it succeeded with
+\helpref{wxSocketBase::Ok}{wxsocketbaseok}.
 
 \wxheading{Parameters}
 
@@ -781,23 +1009,41 @@ Constructs a new wxSocketServer.
 
 \func{}{\destruct{wxSocketServer}}{\void}
 
-Destroys a wxSocketServer object (it doesn't close the accepted connection).
+Destructor (it doesn't close the accepted connections).
 
 %
 % Accept
 %
-\membersection{wxSocketServer::Accept}
+\membersection{wxSocketServer::Accept}\label{wxsocketserveraccept}
 
-\func{wxSocketBase *}{Accept}{\void}
+\func{wxSocketBase *}{Accept}{\param{bool}{ wait = TRUE}}
 
-Creates a new object wxSocketBase and accepts an incoming connection. {\bf Warning !} This function will block the GUI.
+Accepts an incoming connection request, and creates a new
+\helpref{wxSocketBase}{wxsocketbase} object which represents
+the server-side of the connection.
+
+If {\it wait} is TRUE and there are no pending connections to be
+accepted, it will wait for the next incoming connection to arrive.
+{\bf Warning:} This will block the GUI.
+
+If {\it wait} is FALSE, it will try to accept a pending connection
+if there is one, but it will always return immediately without blocking
+the GUI. If you want to use Accept in this way, you can either check for
+incoming connections with \helpref{WaitForAccept}{wxsocketserverwaitforaccept}
+or catch {\bf wxSOCKET\_CONNECTION} events, then call Accept() once you know
+that there is an incoming connection waiting to be accepted.
 
 \wxheading{Return value}
 
-Returns an opened socket connection.
+Returns an opened socket connection, or NULL if an error occured or
+if the {\it wait} parameter was FALSE and there were no pending
+connections.
 
 \wxheading{See also}
 
+\helpref{wxSocketServer::WaitForAccept}{wxsocketserverwaitforaccept}, 
+\helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify}, 
+\helpref{wxSocketBase::Notify}{wxsocketbasenotify}, 
 \helpref{wxSocketServer::AcceptWith}{wxsocketserveracceptwith}
 
 %
@@ -805,10 +1051,9 @@ Returns an opened socket connection.
 %
 \membersection{wxSocketServer::AcceptWith}\label{wxsocketserveracceptwith}
 
-\func{bool}{AcceptWith}{\param{wxSocketBase\&}{ socket}}
+\func{bool}{AcceptWith}{\param{wxSocketBase\&}{ socket}, \param{bool}{ wait = TRUE}}
 
 Accept an incoming connection using the specified socket object.
-This is useful when someone wants to inherit wxSocketBase.
 
 \wxheading{Parameters}
 
@@ -816,5 +1061,41 @@ This is useful when someone wants to inherit wxSocketBase.
 
 \wxheading{Return value}
 
-Returns TRUE if no error occurs, else FALSE.
+Returns TRUE on success, or FALSE if an error occured or if the
+{\it wait} parameter was FALSE and there were no pending
+connections.
+
+\helpref{wxSocketServer::WaitForAccept}{wxsocketserverwaitforaccept}, 
+\helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify}, 
+\helpref{wxSocketBase::Notify}{wxsocketbasenotify}, 
+\helpref{wxSocketServer::Accept}{wxsocketserveraccept} for a detailed explanation
+
+%
+% WaitForAccept
+%
+\membersection{wxSocketServer::WaitForAccept}\label{wxsocketserverwaitforaccept}
+
+\func{bool}{WaitForAccept}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
+
+This function waits for an incoming connection. Use it if you want to call
+\helpref{Accept}{wxsocketserveraccept} or \helpref{AcceptWith}{wxsocketserveracceptwith}
+with {\it wait} set to FALSE, to detect when an incoming connection is waiting
+to be accepted.
+
+\wxheading{Parameters}
+
+\docparam{seconds}{Number of seconds to wait.
+If -1, it will wait for the default timeout,
+as set with \helpref{SetTimeout}{wxsocketbasesettimeout}.}
+
+\docparam{millisecond}{Number of milliseconds to wait.}
+
+\wxheading{Return value}
+
+Returns TRUE if an incoming connection arrived, FALSE if the timeout elapsed.
+
+\wxheading{See also}
+
+\helpref{wxSocketServer::Accept}{wxsocketserveraccept}, 
+\helpref{wxSocketServer::AcceptWith}{wxsocketserveracceptwith}