1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3 %% Purpose: wxSocket docs
4 %% Author: Guillermo Rodriguez Garcia <guille@iies.es>
8 %% Copyright: (c) wxWindows team
9 %% License: wxWindows license
10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12 \section{\class{wxSocketBase
}}\label{wxsocketbase
}
14 wxSocketBase is the base class for all socket-related objects, and it
15 defines all basic IO functionality.
17 \wxheading{Derived from
}
19 \helpref{wxObject
}{wxobject
}
21 \wxheading{Include files
}
25 \wxheading{wxSocket errors
}
28 \begin{twocollist
}\itemsep=
0pt
29 \twocolitem{{\bf wxSOCKET
\_NOERROR}}{No error happened.
}
30 \twocolitem{{\bf wxSOCKET
\_INVOP}}{Invalid operation.
}
31 \twocolitem{{\bf wxSOCKET
\_IOERR}}{Input/Output error.
}
32 \twocolitem{{\bf wxSOCKET
\_INVADDR}}{Invalid address passed to wxSocket.
}
33 \twocolitem{{\bf wxSOCKET
\_INVSOCK}}{Invalid socket (uninitialized).
}
34 \twocolitem{{\bf wxSOCKET
\_NOHOST}}{No corresponding host.
}
35 \twocolitem{{\bf wxSOCKET
\_INVPORT}}{Invalid port.
}
36 \twocolitem{{\bf wxSOCKET
\_WOULDBLOCK}}{The socket is non-blocking and the operation would block.
}
37 \twocolitem{{\bf wxSOCKET
\_TIMEDOUT}}{The timeout for this operation expired.
}
38 \twocolitem{{\bf wxSOCKET
\_MEMERR}}{Memory exhausted.
}
41 \wxheading{wxSocket events
}
44 \begin{twocollist
}\itemsep=
0pt
45 \twocolitem{{\bf wxSOCKET
\_INPUT}}{There is data available for reading.
}
46 \twocolitem{{\bf wxSOCKET
\_OUTPUT}}{The socket is ready to be written to.
}
47 \twocolitem{{\bf wxSOCKET
\_CONNECTION}}{Incoming connection request (server), or successful connection establishment (client).
}
48 \twocolitem{{\bf wxSOCKET
\_LOST}}{The connection has been closed.
}
51 A brief note on how to use these events:
53 The
{\bf wxSOCKET
\_INPUT} event will be issued whenever there is data
54 available for reading. This will be the case if the input queue was
55 empty and new data arrives, or if the application has read some data
56 yet there is still more data available. This means that the application
57 does not need to read all available data in response to a
58 {\bf wxSOCKET
\_INPUT} event, as more events will be produced as
61 The
{\bf wxSOCKET
\_OUTPUT} event is issued when a socket is first
62 connected with
\helpref{Connect
}{wxsocketclientconnect
} or accepted
63 with
\helpref{Accept
}{wxsocketserveraccept
}. After that, new
64 events will be generated only after an output operation fails
65 with
{\bf wxSOCKET
\_WOULDBLOCK} and buffer space becomes available
66 again. This means that the application should assume that it
67 can write data to the socket until an
{\bf wxSOCKET
\_WOULDBLOCK}
68 error occurs; after this, whenever the socket becomes writable
69 again the application will be notified with another
70 {\bf wxSOCKET
\_OUTPUT} event.
72 The
{\bf wxSOCKET
\_CONNECTION} event is issued when a delayed connection
73 request completes successfully (client) or when a new connection arrives
74 at the incoming queue (server).
76 The
{\bf wxSOCKET
\_LOST} event is issued when a close indication is
77 received for the socket. This means that the connection broke down or
78 that it was closed by the peer. Also, this event will be issued if
79 a connection request fails.
81 \wxheading{Event handling
}
83 To process events coming from a socket object, use the following event
84 handler macro to direct events to member functions that take
85 a
\helpref{wxSocketEvent
}{wxsocketevent
} argument.
88 \begin{twocollist
}\itemsep=
0pt
89 \twocolitem{{\bf EVT
\_SOCKET(id, func)
}}{Process a wxEVT
\_SOCKET event.
}
94 \helpref{wxSocketEvent
}{wxsocketevent
},
95 \helpref{wxSocketClient
}{wxsocketclient
},
96 \helpref{wxSocketServer
}{wxsocketserver
},
97 \helpref{Sockets sample
}{samplesockets
}
99 % ---------------------------------------------------------------------------
101 % ---------------------------------------------------------------------------
103 \latexignore{\rtfignore{\wxheading{Function groups
}}}
105 \membersection{Construction and destruction
}
107 \helpref{wxSocketBase
}{wxsocketbaseconstruct
}\\
108 \helpref{\destruct{wxSocketBase
}}{wxsocketbasedestruct
}\\
109 \helpref{Destroy
}{wxsocketbasedestroy
}
111 \membersection{Socket state
}
113 Functions to retrieve current state and miscellaneous info.
115 \helpref{Error
}{wxsocketbaseerror
}\\
116 \helpref{GetLocal
}{wxsocketbasegetlocal
}\\
117 \helpref{GetPeer
}{wxsocketbasegetpeer
}
118 \helpref{IsConnected
}{wxsocketbaseisconnected
}\\
119 \helpref{IsData
}{wxsocketbaseisdata
}\\
120 \helpref{IsDisconnected
}{wxsocketbaseisdisconnected
}\\
121 \helpref{LastCount
}{wxsocketbaselastcount
}\\
122 \helpref{LastError
}{wxsocketbaselasterror
}\\
123 \helpref{Ok
}{wxsocketbaseok
}\\
124 \helpref{SaveState
}{wxsocketbasesavestate
}\\
125 \helpref{RestoreState
}{wxsocketbaserestorestate
}
127 \membersection{Basic IO
}
129 Functions that perform basic IO functionality.
131 \helpref{Close
}{wxsocketbaseclose
}\\
132 \helpref{Discard
}{wxsocketbasediscard
}\\
133 \helpref{Peek
}{wxsocketbasepeek
}\\
134 \helpref{Read
}{wxsocketbaseread
}\\
135 \helpref{ReadMsg
}{wxsocketbasereadmsg
}\\
136 \helpref{Unread
}{wxsocketbaseunread
}\\
137 \helpref{Write
}{wxsocketbasewrite
}\\
138 \helpref{WriteMsg
}{wxsocketbasewritemsg
}
140 Functions that perform a timed wait on a certain IO condition.
142 \helpref{InterruptWait
}{wxsocketbaseinterruptwait
}\\
143 \helpref{Wait
}{wxsocketbasewait
}\\
144 \helpref{WaitForLost
}{wxsocketbasewaitforlost
}\\
145 \helpref{WaitForRead
}{wxsocketbasewaitforread
}\\
146 \helpref{WaitForWrite
}{wxsocketbasewaitforwrite
}\\
150 \helpref{wxSocketServer::WaitForAccept
}{wxsocketserverwaitforaccept
}\\
151 \helpref{wxSocketClient::WaitOnConnect
}{wxsocketclientwaitonconnect
}
153 Functions that allow applications to customize socket IO as needed.
155 \helpref{GetFlags
}{wxsocketbasegetflags
}\\
156 \helpref{SetFlags
}{wxsocketbasesetflags
}\\
157 \helpref{SetTimeout
}{wxsocketbasesettimeout
}
159 \membersection{Handling socket events
}
161 Functions that allow applications to receive socket events.
163 \helpref{Notify
}{wxsocketbasenotify
}\\
164 \helpref{SetNotify
}{wxsocketbasesetnotify
}\\
165 \helpref{GetClientData
}{wxsocketbasegetclientdata
}\\
166 \helpref{SetClientData
}{wxsocketbasesetclientdata
}\\
167 \helpref{SetEventHandler
}{wxsocketbaseseteventhandler
}
169 Callback functions are also available, but they are provided for backwards
170 compatibility only. Their use is strongly discouraged in favour of events,
171 and should be considered deprecated. Callbacks may be unsupported in future
172 releases of wxWindows.
174 \helpref{Callback
}{wxsocketbasecallback
}\\
175 \helpref{CallbackData
}{wxsocketbasecallbackdata
}
178 % ---------------------------------------------------------------------------
180 % ---------------------------------------------------------------------------
182 \helponly{\insertatlevel{2}{
188 \membersection{wxSocketBase::wxSocketBase
}\label{wxsocketbaseconstruct
}
190 \func{}{wxSocketBase
}{\void}
192 Default constructor. Don't use it directly; instead, use
193 \helpref{wxSocketClient
}{wxsocketclient
} to construct a socket client, or
194 \helpref{wxSocketServer
}{wxsocketserver
} to construct a socket server.
196 \membersection{wxSocketBase::
\destruct{wxSocketBase
}}\label{wxsocketbasedestruct
}
198 \func{}{\destruct{wxSocketBase
}}{\void}
200 Destructor. Do not destroy a socket using the delete operator directly;
201 use
\helpref{Destroy
}{wxsocketbasedestroy
} instead. Also, do not create
202 socket objects in the stack.
207 \membersection{wxSocketBase::Callback
}\label{wxsocketbasecallback
}
209 \func{wxSocketBase::wxSockCbk
}{Callback
}{\param{wxSocketBase::wxSockCbk
}{ callback
}}
211 You can setup a callback function to be called when an event occurs.
212 The function will be called only for those events for which notification
213 has been enabled with
\helpref{Notify
}{wxsocketbasenotify
} and
214 \helpref{SetNotify
}{wxsocketbasesetnotify
}. The prototype of the
215 callback must be as follows:
218 void SocketCallback(wxSocketBase& sock, wxSocketNotify evt, char *cdata);
221 The first parameter is a reference to the socket object in which the
222 event occurred. The second parameter tells you which event occurred.
223 (See
\helpref{wxSocket events
}{wxsocketbase
}). The third parameter
224 is the user data you specified using
\helpref{CallbackData
}{wxsocketbasecallbackdata
}.
226 \wxheading{Return value
}
228 A pointer to the previous callback.
230 \wxheading{Remark/Warning
}
232 Note that callbacks are now deprecated and unsupported, and they remain
233 for backwards compatibility only. Use events instead.
237 \helpref{wxSocketBase::CallbackData
}{wxsocketbasecallbackdata
},
238 \helpref{wxSocketBase::SetNotify
}{wxsocketbasesetnotify
},
239 \helpref{wxSocketBase::Notify
}{wxsocketbasenotify
}
244 \membersection{wxSocketBase::CallbackData
}\label{wxsocketbasecallbackdata
}
246 \func{char *
}{CallbackData
}{\param{char *
}{cdata
}}
248 This function sets the the user data which will be passed to a
249 callback function set via
\helpref{Callback
}{wxsocketbasecallback
}.
251 \wxheading{Return value
}
253 A pointer to the previous user data.
255 \wxheading{Remark/Warning
}
257 Note that callbacks are now deprecated and unsupported, and they remain
258 for backwards compatibility only. Use events instead.
262 \helpref{wxSocketBase::Callback
}{wxsocketbasecallback
},
263 \helpref{wxSocketBase::SetNotify
}{wxsocketbasesetnotify
},
264 \helpref{wxSocketBase::Notify
}{wxsocketbasenotify
}
269 \membersection{wxSocketBase::Close
}\label{wxsocketbaseclose
}
271 \func{void
}{Close
}{\void}
273 This function shuts down the socket, disabling further transmission and
274 reception of data; it also disables events for the socket and frees the
275 associated system resources. Upon socket destruction, Close is automatically
276 called, so in most cases you won't need to do it yourself, unless you
277 explicitly want to shut down the socket, typically to notify the peer
278 that you are closing the connection.
280 \wxheading{Remark/Warning
}
282 Although Close immediately disables events for the socket, it is possible
283 that event messages may be waiting in the application's event queue. The
284 application must therefore be prepared to handle socket event messages
285 even after calling Close.
290 \membersection{wxSocketBase::Destroy
}\label{wxsocketbasedestroy
}
292 \func{bool
}{Destroy
}{\void}
294 Destroys the socket safely. Use this function instead of the delete operator,
295 since otherwise socket events could reach the application even after the
296 socket has been destroyed. To prevent this problem, this function appends
297 the wxSocket to a list of object to be deleted on idle time, after all
298 events have been processed. For the same reason, you should avoid creating
299 socket objects in the stack.
301 Destroy calls
\helpref{Close
}{wxsocketbaseclose
} automatically.
303 \wxheading{Return value
}
310 \membersection{wxSocketBase::Discard
}\label{wxsocketbasediscard
}
312 \func{wxSocketBase\&
}{Discard
}{\void}
314 This function simply deletes all bytes in the incoming queue. This function
315 always returns immediately and its operation is not affected by IO flags.
317 Use
\helpref{LastCount
}{wxsocketbaselastcount
} to verify the number of bytes actually discarded.
319 If you use
\helpref{Error
}{wxsocketbaseerror
}, it will always return FALSE.
324 \membersection{wxSocketBase::Error
}\label{wxsocketbaseerror
}
326 \constfunc{bool
}{Error
}{\void}
328 Returns TRUE if an error occurred in the last IO operation.
330 Use this function to check for an error condition after one of the
331 following calls: Discard, Peek, Read, ReadMsg, Unread, Write, WriteMsg.
336 \membersection{wxSocketBase::GetClientData
}\label{wxsocketbasegetclientdata
}
338 \constfunc{void *
}{GetClientData
}{\void}
340 Returns a pointer of the client data for this socket, as set with
341 \helpref{SetClientData
}{wxsocketbasesetclientdata
}
346 \membersection{wxSocketBase::GetLocal
}\label{wxsocketbasegetlocal
}
348 \constfunc{bool
}{GetLocal
}{\param{wxSockAddress\&
}{addr
}}
350 This function returns the local address field of the socket. The local
351 address field contains the complete local address of the socket (local
352 address, local port, ...).
354 \wxheading{Return value
}
356 TRUE if no error happened, FALSE otherwise.
361 \membersection{wxSocketBase::GetFlags
}\label{wxsocketbasegetflags
}
363 \constfunc{wxSocketFlags
}{GetFlags
}{\void}
365 Returns current IO flags, as set with
\helpref{SetFlags
}{wxsocketbasesetflags
}
370 \membersection{wxSocketBase::GetPeer
}\label{wxsocketbasegetpeer
}
372 \constfunc{bool
}{GetPeer
}{\param{wxSockAddress\&
}{addr
}}
374 This function returns the peer address field of the socket. The peer
375 address field contains the complete peer host address of the socket
376 (address, port, ...).
378 \wxheading{Return value
}
380 TRUE if no error happened, FALSE otherwise.
385 \membersection{wxSocketBase::InterruptWait
}\label{wxsocketbaseinterruptwait
}
387 \func{void
}{InterruptWait
}{\void}
389 Use this function to interrupt any wait operation currently in progress.
390 Note that this is not intended as a regular way to interrupt a Wait call,
391 but only as an escape mechanism for exceptional situations where it is
392 absolutely necessary to use it, for example to abort an operation due to
393 some exception or abnormal problem. InterruptWait is automatically called
394 when you
\helpref{Close
}{wxsocketbaseclose
} a socket (and thus also upon
395 socket destruction), so you don't need to use it in these cases.
397 \helpref{wxSocketBase::Wait
}{wxsocketbasewait
},
398 \helpref{wxSocketServer::WaitForAccept
}{wxsocketserverwaitforaccept
},
399 \helpref{wxSocketBase::WaitForLost
}{wxsocketbasewaitforlost
},
400 \helpref{wxSocketBase::WaitForRead
}{wxsocketbasewaitforread
},
401 \helpref{wxSocketBase::WaitForWrite
}{wxsocketbasewaitforwrite
},
402 \helpref{wxSocketClient::WaitOnConnect
}{wxsocketclientwaitonconnect
}
407 \membersection{wxSocketBase::IsConnected
}\label{wxsocketbaseisconnected
}
409 \constfunc{bool
}{IsConnected
}{\void}
411 Returns TRUE if the socket is connected.
416 \membersection{wxSocketBase::IsData
}\label{wxsocketbaseisdata
}
418 \constfunc{bool
}{IsData
}{\void}
420 This function waits until the socket is readable. This might mean that
421 queued data is available for reading or, for streamed sockets, that
422 the connection has been closed, so that a read operation will complete
423 immediately without blocking (unless the
{\bf wxSOCKET
\_WAITALL} flag
424 is set, in which case the operation might still block).
426 \membersection{wxSocketBase::IsDisconnected
}\label{wxsocketbaseisdisconnected
}
431 \constfunc{bool
}{IsDisconnected
}{\void}
433 Returns TRUE if the socket is not connected.
435 \membersection{wxSocketBase::LastCount
}\label{wxsocketbaselastcount
}
440 \constfunc{wxUint32
}{LastCount
}{\void}
442 Returns the number of bytes read or written by the last IO call.
444 Use this function to get the number of bytes actually transferred
445 after using one of the following IO calls: Discard, Peek, Read,
446 ReadMsg, Unread, Write, WriteMsg.
451 \membersection{wxSocketBase::LastError
}\label{wxsocketbaselasterror
}
453 \constfunc{wxSocketError
}{LastError
}{\void}
455 Returns the last wxSocket error. See
\helpref{wxSocket errors
}{wxsocketbase
}.
457 Please note that this function merely returns the last error code,
458 but it should not be used to determine if an error has occurred (this
459 is because successful operations do not change the LastError value).
460 Use
\helpref{Error
}{wxsocketbaseerror
} first, in order to determine
461 if the last IO call failed. If this returns TRUE, use LastError
462 to discover the cause of the error.
467 \membersection{wxSocketBase::Notify
}\label{wxsocketbasenotify
}
469 \func{void
}{Notify
}{\param{bool
}{ notify
}}
471 According to the
{\it notify
} value, this function enables
472 or disables socket events. If
{\it notify
} is TRUE, the events
473 configured with
\helpref{SetNotify
}{wxsocketbasesetnotify
} will
474 be sent to the application. If
{\it notify
} is FALSE; no events
480 \membersection{wxSocketBase::Ok
}\label{wxsocketbaseok
}
482 \constfunc{bool
}{Ok
}{\void}
484 Returns TRUE if the socket is initialized and ready and FALSE in other
487 \wxheading{Remark/Warning
}
489 For
\helpref{wxSocketClient
}{wxsocketclient
}, Ok won't return TRUE unless
490 the client is connected to a server.
492 For
\helpref{wxSocketServer
}{wxsocketserver
}, Ok will return TRUE if the
493 server could bind to the specified address and is already listening for
496 Ok does not check for IO errors;
497 use
\helpref{Error
}{wxsocketbaseerror
} instead for that purpose.
502 \membersection{wxSocketBase::RestoreState
}\label{wxsocketbaserestorestate
}
504 \func{void
}{RestoreState
}{\void}
506 This function restores the previous state of the socket, as saved
507 with
\helpref{SaveState
}{wxsocketbasesavestate
}
509 Calls to SaveState and RestoreState can be nested.
513 \helpref{wxSocketBase::SaveState
}{wxsocketbasesavestate
}
518 \membersection{wxSocketBase::SaveState
}\label{wxsocketbasesavestate
}
520 \func{void
}{SaveState
}{\void}
522 This function saves the current state of the socket in a stack. Socket
523 state includes flags, as set with
\helpref{SetFlags
}{wxsocketbasesetflags
},
524 event mask, as set with
\helpref{SetNotify
}{wxsocketbasesetnotify
} and
525 \helpref{Notify
}{wxsocketbasenotify
}, user data, as set with
526 \helpref{SetClientData
}{wxsocketbasesetclientdata
}, and asynchronous
527 callback settings, as set with
\helpref{Callback
}{wxsocketbasecallback
}
528 and
\helpref{CallbackData
}{wxsocketbasecallbackdata
}.
530 Calls to SaveState and RestoreState can be nested.
534 \helpref{wxSocketBase::RestoreState
}{wxsocketbaserestorestate
}
539 \membersection{wxSocketBase::SetClientData
}\label{wxsocketbasesetclientdata
}
541 \func{void
}{SetClientData
}{\param{void *
}{data
}}
543 Sets user-supplied client data for this socket. All socket events will
544 contain a pointer to this data, which can be retrieved with
545 the
\helpref{wxSocketEvent::GetClientData
}{wxsocketeventgetclientdata
} function.
550 \membersection{wxSocketBase::SetEventHandler
}\label{wxsocketbaseseteventhandler
}
552 \func{void
}{SetEventHandler
}{\param{wxEvtHandler\&
}{ handler
},
\param{int
}{ id = -
1}}
554 Sets an event handler to be called when a socket event occurs. The
555 handler will be called for those events for which notification is
556 enabled with
\helpref{SetNotify
}{wxsocketbasesetnotify
} and
557 \helpref{Notify
}{wxsocketbasenotify
}.
559 \wxheading{Parameters
}
561 \docparam{handler
}{Specifies the event handler you want to use.
}
563 \docparam{id
}{The id of socket event.
}
567 \helpref{wxSocketBase::SetNotify
}{wxsocketbasesetnotify
},
568 \helpref{wxSocketBase::Notify
}{wxsocketbasenotify
},
569 \helpref{wxSocketEvent
}{wxsocketevent
},
570 \helpref{wxEvtHandler
}{wxevthandler
}
575 \membersection{wxSocketBase::SetFlags
}\label{wxsocketbasesetflags
}
577 \func{void
}{SetFlags
}{\param{wxSocketFlags
}{ flags
}}
579 Use SetFlags to customize IO operation for this socket.
580 The
{\it flags
} parameter may be a combination of flags ORed together.
581 The following flags can be used:
584 \begin{twocollist
}\itemsep=
0pt
585 \twocolitem{{\bf wxSOCKET
\_NONE}}{Normal functionality.
}
586 \twocolitem{{\bf wxSOCKET
\_NOWAIT}}{Read/write as much data as possible and return immediately.
}
587 \twocolitem{{\bf wxSOCKET
\_WAITALL}}{Wait for all required data to be read/written unless an error occurs.
}
588 \twocolitem{{\bf wxSOCKET
\_BLOCK}}{Block the GUI (do not yield) while reading/writing data.
}
591 A brief overview on how to use these flags follows.
593 If no flag is specified (this is the same as
{\bf wxSOCKET
\_NONE}),
594 IO calls will return after some data has been read or written, even
595 when the transfer might not be complete. This is the same as issuing
596 exactly one blocking low-level call to recv() or send(). Note
597 that
{\it blocking
} here refers to when the function returns, not
598 to whether the GUI blocks during this time.
600 If
{\bf wxSOCKET
\_NOWAIT} is specified, IO calls will return immediately.
601 Read operations will retrieve only available data. Write operations will
602 write as much data as possible, depending on how much space is available
603 in the output buffer. This is the same as issuing exactly one nonblocking
604 low-level call to recv() or send(). Note that
{\it nonblocking
} here
605 refers to when the function returns, not to whether the GUI blocks during
608 If
{\bf wxSOCKET
\_WAITALL} is specified, IO calls won't return until ALL
609 the data has been read or written (or until an error occurs), blocking if
610 necessary, and issuing several low level calls if necessary. This is the
611 same as having a loop which makes as many blocking low-level calls to
612 recv() or send() as needed so as to transfer all the data. Note
613 that
{\it blocking
} here refers to when the function returns, not
614 to whether the GUI blocks during this time.
616 The
{\bf wxSOCKET
\_BLOCK} flag controls whether the GUI blocks during
617 IO operations. If this flag is specified, the socket will not yield
618 during IO calls, so the GUI will remain blocked until the operation
619 completes. If it is not used, then the application must take extra
620 care to avoid unwanted reentrance.
624 {\bf wxSOCKET
\_NONE} will try to read at least SOME data, no matter how much.
626 {\bf wxSOCKET
\_NOWAIT} will always return immediately, even if it cannot
627 read or write ANY data.
629 {\bf wxSOCKET
\_WAITALL} will only return when it has read or written ALL
632 {\bf wxSOCKET
\_BLOCK} has nothing to do with the previous flags and
633 it controls whether the GUI blocks.
638 \membersection{wxSocketBase::SetNotify
}\label{wxsocketbasesetnotify
}
640 \func{void
}{SetNotify
}{\param{wxSocketEventFlags
}{ flags
}}
642 SetNotify specifies which socket events are to be sent to the event handler.
643 The
{\it flags
} parameter may be combination of flags ORed together. The
644 following flags can be used:
647 \begin{twocollist
}\itemsep=
0pt
648 \twocolitem{{\bf wxSOCKET
\_INPUT\_FLAG}}{to receive wxSOCKET
\_INPUT}
649 \twocolitem{{\bf wxSOCKET
\_OUTPUT\_FLAG}}{to receive wxSOCKET
\_OUTPUT}
650 \twocolitem{{\bf wxSOCKET
\_CONNECTION\_FLAG}}{to receive wxSOCKET
\_CONNECTION}
651 \twocolitem{{\bf wxSOCKET
\_LOST\_FLAG}}{to receive wxSOCKET
\_LOST}
657 sock.SetNotify(wxSOCKET_INPUT_FLAG | wxSOCKET_LOST_FLAG);
661 In this example, the user will be notified about incoming socket data and
662 whenever the connection is closed.
664 For more information on socket events see
\helpref{wxSocket events
}{wxsocketbase
}.
669 \membersection{wxSocketBase::SetTimeout
}\label{wxsocketbasesettimeout
}
671 \func{void
}{SetTimeout
}{\param{int
}{seconds
}}
673 This function sets the default socket timeout in seconds. This timeout
674 applies to all IO calls, and also to the
\helpref{Wait
}{wxsocketbasewait
} family
675 of functions if you don't specify a wait interval. Initially, the default
676 timeout is
10 minutes.
681 \membersection{wxSocketBase::Peek
}\label{wxsocketbasepeek
}
683 \func{wxSocketBase\&
}{Peek
}{\param{void *
}{ buffer
},
\param{wxUint32
}{ nbytes
}}
685 This function peeks a buffer of
{\it nbytes
} bytes from the socket.
686 Peeking a buffer doesn't delete it from the socket input queue.
688 Use
\helpref{LastCount
}{wxsocketbaselastcount
} to verify the number of bytes actually peeked.
690 Use
\helpref{Error
}{wxsocketbaseerror
} to determine if the operation succeeded.
692 \wxheading{Parameters
}
694 \docparam{buffer
}{Buffer where to put peeked data.
}
696 \docparam{nbytes
}{Number of bytes.
}
698 \wxheading{Return value
}
700 Returns a reference to the current object.
702 \wxheading{Remark/Warning
}
704 The exact behaviour of wxSocketBase::Peek depends on the combination
705 of flags being used. For a detailed explanation, see
\helpref{wxSocketBase::SetFlags
}{wxsocketbasesetflags
}
709 \helpref{wxSocketBase::Error
}{wxsocketbaseerror
},
710 \helpref{wxSocketBase::LastError
}{wxsocketbaselasterror
},
711 \helpref{wxSocketBase::LastCount
}{wxsocketbaselastcount
},
712 \helpref{wxSocketBase::SetFlags
}{wxsocketbasesetflags
}
717 \membersection{wxSocketBase::Read
}\label{wxsocketbaseread
}
719 \func{wxSocketBase\&
}{Read
}{\param{void *
}{ buffer
},
\param{wxUint32
}{ nbytes
}}
721 This function reads a buffer of
{\it nbytes
} bytes from the socket.
723 Use
\helpref{LastCount
}{wxsocketbaselastcount
} to verify the number of bytes actually read.
725 Use
\helpref{Error
}{wxsocketbaseerror
} to determine if the operation succeeded.
727 \wxheading{Parameters
}
729 \docparam{buffer
}{Buffer where to put read data.
}
731 \docparam{nbytes
}{Number of bytes.
}
733 \wxheading{Return value
}
735 Returns a reference to the current object.
737 \wxheading{Remark/Warning
}
739 The exact behaviour of wxSocketBase::Read depends on the combination
740 of flags being used. For a detailed explanation, see
\helpref{wxSocketBase::SetFlags
}{wxsocketbasesetflags
}.
744 \helpref{wxSocketBase::Error
}{wxsocketbaseerror
},
745 \helpref{wxSocketBase::LastError
}{wxsocketbaselasterror
},
746 \helpref{wxSocketBase::LastCount
}{wxsocketbaselastcount
},
747 \helpref{wxSocketBase::SetFlags
}{wxsocketbasesetflags
}
752 \membersection{wxSocketBase::ReadMsg
}\label{wxsocketbasereadmsg
}
754 \func{wxSocketBase\&
}{ReadMsg
}{\param{void *
}{ buffer
},
\param{wxUint32
}{ nbytes
}}
756 This function reads a buffer sent by
\helpref{WriteMsg
}{wxsocketbasewritemsg
}
757 on a socket. If the buffer passed to the function isn't big enough, the
758 remaining bytes will be discarded. This function always waits for the
759 buffer to be entirely filled, unless an error occurs.
761 Use
\helpref{LastCount
}{wxsocketbaselastcount
} to verify the number of bytes actually read.
763 Use
\helpref{Error
}{wxsocketbaseerror
} to determine if the operation succeeded.
765 \wxheading{Parameters
}
767 \docparam{buffer
}{Buffer where to put read data.
}
769 \docparam{nbytes
}{Size of the buffer.
}
771 \wxheading{Return value
}
773 Returns a reference to the current object.
775 \wxheading{Remark/Warning
}
777 wxSocketBase::ReadMsg will behave as if the
{\bf wxSOCKET
\_WAITALL} flag
778 was always set and it will always ignore the
{\bf wxSOCKET
\_NOWAIT} flag.
779 The exact behaviour of ReadMsg depends on the
{\bf wxSOCKET
\_BLOCK} flag.
780 For a detailed explanation, see
\helpref{wxSocketBase::SetFlags
}{wxsocketbasesetflags
}.
784 \helpref{wxSocketBase::Error
}{wxsocketbaseerror
},
785 \helpref{wxSocketBase::LastError
}{wxsocketbaselasterror
},
786 \helpref{wxSocketBase::LastCount
}{wxsocketbaselastcount
},
787 \helpref{wxSocketBase::SetFlags
}{wxsocketbasesetflags
},
788 \helpref{wxSocketBase::WriteMsg
}{wxsocketbasewritemsg
}
793 \membersection{wxSocketBase::Unread
}\label{wxsocketbaseunread
}
795 \func{wxSocketBase\&
}{Unread
}{\param{const void *
}{ buffer
},
\param{wxUint32
}{ nbytes
}}
797 This function unreads a buffer. That is, the data in the buffer is put back
798 in the incoming queue. This function is not affected by wxSocket flags.
800 If you use
\helpref{LastCount
}{wxsocketbaselastcount
}, it will always return
{\it nbytes
}.
802 If you use
\helpref{Error
}{wxsocketbaseerror
}, it will always return FALSE.
804 \wxheading{Parameters
}
806 \docparam{buffer
}{Buffer to be unread.
}
808 \docparam{nbytes
}{Number of bytes.
}
810 \wxheading{Return value
}
812 Returns a reference to the current object.
816 \helpref{wxSocketBase::Error
}{wxsocketbaseerror
},
817 \helpref{wxSocketBase::LastCount
}{wxsocketbaselastcount
},
818 \helpref{wxSocketBase::LastError
}{wxsocketbaselasterror
}
823 \membersection{wxSocketBase::Wait
}\label{wxsocketbasewait
}
825 \func{bool
}{Wait
}{\param{long
}{ seconds = -
1},
\param{long
}{ millisecond =
0}}
827 This function waits until any of the following conditions is TRUE:
830 \item The socket becomes readable.
831 \item The socket becomes writable.
832 \item An ongoing connection request has completed (
\helpref{wxSocketClient
}{wxsocketclient
} only)
833 \item An incoming connection request has arrived (
\helpref{wxSocketServer
}{wxsocketserver
} only)
834 \item The connection has been closed.
837 Note that it is recommended to use the individual Wait functions
838 to wait for the required condition, instead of this one.
840 \wxheading{Parameters
}
842 \docparam{seconds
}{Number of seconds to wait.
843 If -
1, it will wait for the default timeout,
844 as set with
\helpref{SetTimeout
}{wxsocketbasesettimeout
}.
}
846 \docparam{millisecond
}{Number of milliseconds to wait.
}
848 \wxheading{Return value
}
850 Returns TRUE when any of the above conditions is satisfied,
851 FALSE if the timeout was reached.
855 \helpref{wxSocketBase::InterruptWait
}{wxsocketbaseinterruptwait
},
856 \helpref{wxSocketServer::WaitForAccept
}{wxsocketserverwaitforaccept
},
857 \helpref{wxSocketBase::WaitForLost
}{wxsocketbasewaitforlost
},
858 \helpref{wxSocketBase::WaitForRead
}{wxsocketbasewaitforread
},
859 \helpref{wxSocketBase::WaitForWrite
}{wxsocketbasewaitforwrite
},
860 \helpref{wxSocketClient::WaitOnConnect
}{wxsocketclientwaitonconnect
}
865 \membersection{wxSocketBase::WaitForLost
}\label{wxsocketbasewaitforlost
}
867 \func{bool
}{Wait
}{\param{long
}{ seconds = -
1},
\param{long
}{ millisecond =
0}}
869 This function waits until the connection is lost. This may happen if
870 the peer gracefully closes the connection or if the connection breaks.
872 \wxheading{Parameters
}
874 \docparam{seconds
}{Number of seconds to wait.
875 If -
1, it will wait for the default timeout,
876 as set with
\helpref{SetTimeout
}{wxsocketbasesettimeout
}.
}
878 \docparam{millisecond
}{Number of milliseconds to wait.
}
880 \wxheading{Return value
}
882 Returns TRUE if the connection was lost, FALSE if the timeout was reached.
886 \helpref{wxSocketBase::InterruptWait
}{wxsocketbaseinterruptwait
},
887 \helpref{wxSocketBase::Wait
}{wxsocketbasewait
}
892 \membersection{wxSocketBase::WaitForRead
}\label{wxsocketbasewaitforread
}
894 \func{bool
}{WaitForRead
}{\param{long
}{ seconds = -
1},
\param{long
}{ millisecond =
0}}
896 This function waits until the socket is readable. This might mean that
897 queued data is available for reading or, for streamed sockets, that
898 the connection has been closed, so that a read operation will complete
899 immediately without blocking (unless the
{\bf wxSOCKET
\_WAITALL} flag
900 is set, in which case the operation might still block).
902 \wxheading{Parameters
}
904 \docparam{seconds
}{Number of seconds to wait.
905 If -
1, it will wait for the default timeout,
906 as set with
\helpref{SetTimeout
}{wxsocketbasesettimeout
}.
}
908 \docparam{millisecond
}{Number of milliseconds to wait.
}
910 \wxheading{Return value
}
912 Returns TRUE if the socket becomes readable, FALSE on timeout.
916 \helpref{wxSocketBase::InterruptWait
}{wxsocketbaseinterruptwait
},
917 \helpref{wxSocketBase::Wait
}{wxsocketbasewait
}
922 \membersection{wxSocketBase::WaitForWrite
}\label{wxsocketbasewaitforwrite
}
924 \func{bool
}{WaitForWrite
}{\param{long
}{ seconds = -
1},
\param{long
}{ millisecond =
0}}
926 This function waits until the socket becomes writable. This might mean that
927 the socket is ready to send new data, or for streamed sockets, that the
928 connection has been closed, so that a write operation is guaranteed to
929 complete immediately (unless the
{\bf wxSOCKET
\_WAITALL} flag is set,
930 in which case the operation might still block).
932 \wxheading{Parameters
}
934 \docparam{seconds
}{Number of seconds to wait.
935 If -
1, it will wait for the default timeout,
936 as set with
\helpref{SetTimeout
}{wxsocketbasesettimeout
}.
}
938 \docparam{millisecond
}{Number of milliseconds to wait.
}
940 \wxheading{Return value
}
942 Returns TRUE if the socket becomes writable, FALSE on timeout.
946 \helpref{wxSocketBase::InterruptWait
}{wxsocketbaseinterruptwait
},
947 \helpref{wxSocketBase::Wait
}{wxsocketbasewait
}
952 \membersection{wxSocketBase::Write
}\label{wxsocketbasewrite
}
954 \func{wxSocketBase\&
}{Write
}{\param{const void *
}{ buffer
},
\param{wxUint32
}{ nbytes
}}
956 This function writes a buffer of
{\it nbytes
} bytes to the socket.
958 Use
\helpref{LastCount
}{wxsocketbaselastcount
} to verify the number of bytes actually written.
960 Use
\helpref{Error
}{wxsocketbaseerror
} to determine if the operation succeeded.
962 \wxheading{Parameters
}
964 \docparam{buffer
}{Buffer with the data to be sent.
}
966 \docparam{nbytes
}{Number of bytes.
}
968 \wxheading{Return value
}
970 Returns a reference to the current object.
972 \wxheading{Remark/Warning
}
974 The exact behaviour of wxSocketBase::Write depends on the combination
975 of flags being used. For a detailed explanation, see
\helpref{wxSocketBase::SetFlags
}{wxsocketbasesetflags
}.
979 \helpref{wxSocketBase::Error
}{wxsocketbaseerror
},
980 \helpref{wxSocketBase::LastError
}{wxsocketbaselasterror
},
981 \helpref{wxSocketBase::LastCount
}{wxsocketbaselastcount
},
982 \helpref{wxSocketBase::SetFlags
}{wxsocketbasesetflags
}
987 \membersection{wxSocketBase::WriteMsg
}\label{wxsocketbasewritemsg
}
989 \func{wxSocketBase\&
}{WriteMsg
}{\param{const void *
}{ buffer
},
\param{wxUint32
}{ nbytes
}}
991 This function writes a buffer of
{\it nbytes
} bytes from the socket, but it
992 writes a short header before so that
\helpref{ReadMsg
}{wxsocketbasereadmsg
}
993 knows how much data should it actually read. So, a buffer sent with WriteMsg
994 {\bf must
} be read with ReadMsg. This function always waits for the entire
995 buffer to be sent, unless an error occurs.
997 Use
\helpref{LastCount
}{wxsocketbaselastcount
} to verify the number of bytes actually written.
999 Use
\helpref{Error
}{wxsocketbaseerror
} to determine if the operation succeeded.
1001 \wxheading{Parameters
}
1003 \docparam{buffer
}{Buffer with the data to be sent.
}
1005 \docparam{nbytes
}{Number of bytes to send.
}
1007 \wxheading{Return value
}
1009 Returns a reference to the current object.
1011 \wxheading{Remark/Warning
}
1013 wxSocketBase::WriteMsg will behave as if the
{\bf wxSOCKET
\_WAITALL} flag
1014 was always set and it will always ignore the
{\bf wxSOCKET
\_NOWAIT} flag.
1015 The exact behaviour of WriteMsg depends on the
{\bf wxSOCKET
\_BLOCK} flag.
1016 For a detailed explanation, see
\helpref{wxSocketBase::SetFlags
}{wxsocketbasesetflags
}.
1018 \wxheading{See also
}
1020 \helpref{wxSocketBase::Error
}{wxsocketbaseerror
},
1021 \helpref{wxSocketBase::LastError
}{wxsocketbaselasterror
},
1022 \helpref{wxSocketBase::LastCount
}{wxsocketbaselastcount
},
1023 \helpref{wxSocketBase::SetFlags
}{wxsocketbasesetflags
},
1024 \helpref{wxSocketBase::ReadMsg
}{wxsocketbasereadmsg
}
1027 % ---------------------------------------------------------------------------
1028 % CLASS wxSocketClient
1029 % ---------------------------------------------------------------------------
1031 \section{\class{wxSocketClient
}}\label{wxsocketclient
}
1033 \wxheading{Derived from
}
1035 \helpref{wxSocketBase
}{wxsocketbase
}
1037 \wxheading{Include files
}
1041 \latexignore{\rtfignore{\wxheading{Members
}}}
1043 % ---------------------------------------------------------------------------
1045 % ---------------------------------------------------------------------------
1049 \membersection{wxSocketClient::wxSocketClient
}
1051 \func{}{wxSocketClient
}{\param{wxSocketFlags
}{ flags = wxSOCKET
\_NONE}}
1055 \wxheading{Parameters
}
1057 \docparam{flags
}{Socket flags (See
\helpref{wxSocketBase::SetFlags
}{wxsocketbasesetflags
})
}
1062 \membersection{wxSocketClient::
\destruct{wxSocketClient
}}
1064 \func{}{\destruct{wxSocketClient
}}{\void}
1066 Destructor. Please see
\helpref{wxSocketBase::Destroy
}{wxsocketbasedestroy
}.
1071 \membersection{wxSocketClient::Connect
}\label{wxsocketclientconnect
}
1073 \func{bool
}{Connect
}{\param{wxSockAddress\&
}{ address
},
\param{bool
}{ wait = TRUE
}}
1075 Connects to a server using the specified address.
1077 If
{\it wait
} is TRUE, Connect will wait until the connection
1078 completes.
{\bf Warning:
} This will block the GUI.
1080 If
{\it wait
} is FALSE, Connect will try to establish the connection and
1081 return immediately, without blocking the GUI. When used this way, even if
1082 Connect returns FALSE, the connection request can be completed later.
1083 To detect this, use
\helpref{WaitOnConnect
}{wxsocketclientwaitonconnect
},
1084 or catch
{\bf wxSOCKET
\_CONNECTION} events (for successful establishment)
1085 and
{\bf wxSOCKET
\_LOST} events (for connection failure).
1087 \wxheading{Parameters
}
1089 \docparam{address
}{Address of the server.
}
1091 \docparam{wait
}{If TRUE, waits for the connection to complete.
}
1093 \wxheading{Return value
}
1095 Returns TRUE if the connection is established and no error occurs.
1097 If
{\it wait
} was TRUE, and Connect returns FALSE, an error occurred
1098 and the connection failed.
1100 If
{\it wait
} was FALSE, and Connect returns FALSE, you should still
1101 be prepared to handle the completion of this connection request, either
1102 with
\helpref{WaitOnConnect
}{wxsocketclientwaitonconnect
} or by
1103 watching
{\bf wxSOCKET
\_CONNECTION} and
{\bf wxSOCKET
\_LOST} events.
1105 \wxheading{See also
}
1107 \helpref{wxSocketClient::WaitOnConnect
}{wxsocketclientwaitonconnect
},
1108 \helpref{wxSocketBase::SetNotify
}{wxsocketbasesetnotify
},
1109 \helpref{wxSocketBase::Notify
}{wxsocketbasenotify
}
1114 \membersection{wxSocketClient::WaitOnConnect
}\label{wxsocketclientwaitonconnect
}
1116 \func{bool
}{WaitOnConnect
}{\param{long
}{ seconds = -
1},
\param{long
}{ milliseconds =
0}}
1118 Wait until a connection request completes, or until the specified timeout
1119 elapses. Use this function after issuing a call
1120 to
\helpref{Connect
}{wxsocketclientconnect
} with
{\it wait
} set to FALSE.
1122 \wxheading{Parameters
}
1124 \docparam{seconds
}{Number of seconds to wait.
1125 If -
1, it will wait for the default timeout,
1126 as set with
\helpref{SetTimeout
}{wxsocketbasesettimeout
}.
}
1128 \docparam{millisecond
}{Number of milliseconds to wait.
}
1130 \wxheading{Return value
}
1132 WaitOnConnect returns TRUE if the connection request completes. This
1133 does not necessarily mean that the connection was successfully established;
1134 it might also happen that the connection was refused by the peer. Use
1135 \helpref{IsConnected
}{wxsocketbaseisconnected
} to distinguish between
1136 these two situations.
1138 If the timeout elapses, WaitOnConnect returns FALSE.
1140 These semantics allow code like this:
1143 // Issue the connection request
1144 client->Connect(addr, FALSE);
1146 // Wait until the request completes or until we decide to give up
1147 bool waitmore = TRUE;
1148 while ( !client->WaitOnConnect(seconds, millis) && waitmore )
1150 // possibly give some feedback to the user,
1151 // and update waitmore as needed.
1153 bool success = client->IsConnected();
1156 \wxheading{See also
}
1158 \helpref{wxSocketClient::Connect
}{wxsocketclientconnect
},
1159 \helpref{wxSocketBase::InterruptWait
}{wxsocketbaseinterruptwait
},
1160 \helpref{wxSocketBase::IsConnected
}{wxsocketbaseisconnected
}
1162 % ---------------------------------------------------------------------------
1163 % CLASS: wxSocketEvent
1164 % ---------------------------------------------------------------------------
1165 \section{\class{wxSocketEvent
}}\label{wxsocketevent
}
1167 This event class contains information about socket events.
1169 \wxheading{Derived from
}
1171 \helpref{wxEvent
}{wxevent
}
1173 \wxheading{Include files
}
1177 \wxheading{Event table macros
}
1179 To process a socket event, use these event handler macros to direct input
1180 to member functions that take a wxSocketEvent argument.
1183 \begin{twocollist
}\itemsep=
0pt
1184 \twocolitem{{\bf EVT
\_SOCKET(id, func)
}}{Process a socket event, supplying the member function.
}
1187 \wxheading{See also
}
1189 \helpref{wxSocketBase
}{wxsocketbase
},
1190 \helpref{wxSocketClient
}{wxsocketclient
},
1191 \helpref{wxSocketServer
}{wxsocketserver
}
1193 \latexignore{\rtfignore{\wxheading{Members
}}}
1195 \membersection{wxSocketEvent::wxSocketEvent
}
1197 \func{}{wxSocketEvent
}{\param{int
}{ id =
0}}
1201 \membersection{wxSocketEvent::GetClientData
}\label{wxsocketeventgetclientdata
}
1203 \func{void *
}{GetClientData
}{\void}
1205 Gets the client data of the socket which generated this event, as
1206 set with
\helpref{wxSocketBase::SetClientData
}{wxsocketbasesetclientdata
}.
1208 \membersection{wxSocketEvent::GetSocket
}\label{wxsocketeventgetsocket
}
1210 \constfunc{wxSocketBase *
}{GetSocket
}{\void}
1212 Returns the socket object to which this event refers to. This makes
1213 it possible to use the same event handler for different sockets.
1215 \membersection{wxSocketEvent::GetSocketEvent
}\label{wxsocketeventgetsocketevent
}
1217 \constfunc{wxSocketNotify
}{GetSocketEvent
}{\void}
1219 Returns the socket event type.