]> git.saurik.com Git - wxWidgets.git/blame_incremental - docs/latex/wx/socket.tex
Some work on GTK focus handling and events.
[wxWidgets.git] / docs / latex / wx / socket.tex
... / ...
CommitLineData
1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2%% Name: socket.tex
3%% Purpose: wxSocket docs
4%% Author: Guillermo Rodriguez Garcia <guille@iies.es>
5%% Modified by:
6%% Created: 1999
7%% RCS-ID: $Id$
8%% Copyright: (c) wxWindows team
9%% License: wxWindows license
10%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11
12\section{\class{wxSocketBase}}\label{wxsocketbase}
13
14wxSocketBase is the base class for all socket-related objects, and it
15defines all basic IO functionality.
16
17\wxheading{Derived from}
18
19\helpref{wxObject}{wxobject}
20
21\wxheading{Include files}
22
23<wx/socket.h>
24
25\wxheading{wxSocket errors}
26
27\twocolwidtha{7cm}
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.}
39\end{twocollist}
40
41\wxheading{wxSocket events}
42
43\twocolwidtha{7cm}
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.}
49\end{twocollist}
50
51A brief note on how to use these events:
52
53The {\bf wxSOCKET\_INPUT} event will be issued whenever there is data
54available for reading. This will be the case if the input queue was
55empty and new data arrives, or if the application has read some data
56yet there is still more data available. This means that the application
57does not need to read all available data in response to a
58{\bf wxSOCKET\_INPUT} event, as more events will be produced as
59necessary.
60
61The {\bf wxSOCKET\_OUTPUT} event is issued when a socket is first
62connected with \helpref{Connect}{wxsocketclientconnect} or accepted
63with \helpref{Accept}{wxsocketserveraccept}. After that, new
64events will be generated only after an output operation fails
65with {\bf wxSOCKET\_WOULDBLOCK} and buffer space becomes available
66again. This means that the application should assume that it
67can write data to the socket until an {\bf wxSOCKET\_WOULDBLOCK}
68error occurs; after this, whenever the socket becomes writable
69again the application will be notified with another
70{\bf wxSOCKET\_OUTPUT} event.
71
72The {\bf wxSOCKET\_CONNECTION} event is issued when a delayed connection
73request completes succesfully (client) or when a new connection arrives
74at the incoming queue (server).
75
76The {\bf wxSOCKET\_LOST} event is issued when a close indication is
77received for the socket. This means that the connection broke down or
78that it was closed by the peer. Also, this event will be issued if
79a connection request fails.
80
81\wxheading{Event handling}
82
83To process events coming from a socket object, use the following event
84handler macro to direct events to member functions that take
85a \helpref{wxSocketEvent}{wxsocketevent} argument.
86
87\twocolwidtha{7cm}%
88\begin{twocollist}\itemsep=0pt
89\twocolitem{{\bf EVT\_SOCKET(id, func)}}{Process a wxEVT\_SOCKET event.}
90\end{twocollist}
91
92\wxheading{See also}
93
94\helpref{wxSocketEvent}{wxsocketevent},
95\helpref{wxSocketClient}{wxsocketclient},
96\helpref{wxSocketServer}{wxsocketserver},
97\helpref{Sockets sample}{samplesockets}
98
99% ---------------------------------------------------------------------------
100% Function groups
101% ---------------------------------------------------------------------------
102
103\latexignore{\rtfignore{\wxheading{Function groups}}}
104
105\membersection{Construction and destruction}
106
107\helpref{wxSocketBase}{wxsocketbaseconstruct}\\
108\helpref{\destruct{wxSocketBase}}{wxsocketbasedestruct}\\
109\helpref{Destroy}{wxsocketbasedestroy}
110
111\membersection{Socket state}
112
113Functions to retrieve current state and miscellaneous info.
114
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}
126
127\membersection{Basic IO}
128
129Functions that perform basic IO functionality.
130
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}
139
140Functions that perform a timed wait on a certain IO condition.
141
142\helpref{InterruptWait}{wxsocketbaseinterruptwait}\\
143\helpref{Wait}{wxsocketbasewait}\\
144\helpref{WaitForLost}{wxsocketbasewaitforlost}\\
145\helpref{WaitForRead}{wxsocketbasewaitforread}\\
146\helpref{WaitForWrite}{wxsocketbasewaitforwrite}\\
147
148and also:
149
150\helpref{wxSocketServer::WaitForAccept}{wxsocketserverwaitforaccept}\\
151\helpref{wxSocketClient::WaitOnConnect}{wxsocketclientwaitonconnect}
152
153Functions that allow applications to customize socket IO as needed.
154
155\helpref{GetFlags}{wxsocketbasegetflags}\\
156\helpref{SetFlags}{wxsocketbasesetflags}\\
157\helpref{SetTimeout}{wxsocketbasesettimeout}
158
159\membersection{Handling socket events}
160
161Functions that allow applications to receive socket events.
162
163\helpref{Notify}{wxsocketbasenotify}\\
164\helpref{SetNotify}{wxsocketbasesetnotify}\\
165\helpref{GetClientData}{wxsocketbasegetclientdata}\\
166\helpref{SetClientData}{wxsocketbasesetclientdata}\\
167\helpref{SetEventHandler}{wxsocketbaseseteventhandler}
168
169Callback functions are also available, but they are provided for backwards
170compatibility only. Their use is strongly discouraged in favour of events,
171and should be considered deprecated. Callbacks may be unsupported in future
172releases of wxWindows.
173
174\helpref{Callback}{wxsocketbasecallback}\\
175\helpref{CallbackData}{wxsocketbasecallbackdata}
176
177
178% ---------------------------------------------------------------------------
179% Members here
180% ---------------------------------------------------------------------------
181
182\helponly{\insertatlevel{2}{
183
184\wxheading{Members}
185
186}}
187
188\membersection{wxSocketBase::wxSocketBase}\label{wxsocketbaseconstruct}
189
190\func{}{wxSocketBase}{\void}
191
192Default 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.
195
196\membersection{wxSocketBase::\destruct{wxSocketBase}}\label{wxsocketbasedestruct}
197
198\func{}{\destruct{wxSocketBase}}{\void}
199
200Destructor. Do not destroy a socket using the delete operator directly;
201use \helpref{Destroy}{wxsocketbasedestroy} instead. Also, do not create
202socket objects in the stack.
203
204%
205% Callback
206%
207\membersection{wxSocketBase::Callback}\label{wxsocketbasecallback}
208
209\func{wxSocketBase::wxSockCbk}{Callback}{\param{wxSocketBase::wxSockCbk}{ callback}}
210
211You can setup a callback function to be called when an event occurs.
212The function will be called only for those events for which notification
213has been enabled with \helpref{Notify}{wxsocketbasenotify} and
214\helpref{SetNotify}{wxsocketbasesetnotify}. The prototype of the
215callback must be as follows:
216
217\begin{verbatim}
218void SocketCallback(wxSocketBase& sock, wxSocketNotify evt, char *cdata);
219\end{verbatim}
220
221The first parameter is a reference to the socket object in which the
222event occurred. The second parameter tells you which event occurred.
223(See \helpref{wxSocket events}{wxsocketbase}). The third parameter
224is the user data you specified using \helpref{CallbackData}{wxsocketbasecallbackdata}.
225
226\wxheading{Return value}
227
228A pointer to the previous callback.
229
230\wxheading{Remark/Warning}
231
232Note that callbacks are now deprecated and unsupported, and they remain
233for backwards compatibility only. Use events instead.
234
235\wxheading{See also}
236
237\helpref{wxSocketBase::CallbackData}{wxsocketbasecallbackdata},
238\helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify},
239\helpref{wxSocketBase::Notify}{wxsocketbasenotify}
240
241%
242% CallbackData
243%
244\membersection{wxSocketBase::CallbackData}\label{wxsocketbasecallbackdata}
245
246\func{char *}{CallbackData}{\param{char *}{cdata}}
247
248This function sets the the user data which will be passed to a
249callback function set via \helpref{Callback}{wxsocketbasecallback}.
250
251\wxheading{Return value}
252
253A pointer to the previous user data.
254
255\wxheading{Remark/Warning}
256
257Note that callbacks are now deprecated and unsupported, and they remain
258for backwards compatibility only. Use events instead.
259
260\wxheading{See also}
261
262\helpref{wxSocketBase::Callback}{wxsocketbasecallback},
263\helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify},
264\helpref{wxSocketBase::Notify}{wxsocketbasenotify}
265
266%
267% Close
268%
269\membersection{wxSocketBase::Close}\label{wxsocketbaseclose}
270
271\func{void}{Close}{\void}
272
273This function shuts down the socket, disabling further transmission and
274reception of data; it also disables events for the socket and frees the
275associated system resources. Upon socket destruction, Close is automatically
276called, so in most cases you won't need to do it yourself, unless you
277explicitly want to shut down the socket, typically to notify the peer
278that you are closing the connection.
279
280\wxheading{Remark/Warning}
281
282Although Close immediately disables events for the socket, it is possible
283that event messages may be waiting in the application's event queue. The
284application must therefore be prepared to handle socket event messages
285even after calling Close.
286
287%
288% Destroy
289%
290\membersection{wxSocketBase::Destroy}\label{wxsocketbasedestroy}
291
292\func{bool}{Destroy}{\void}
293
294Destroys the socket safely. Use this function instead of the delete operator,
295since otherwise socket events could reach the application even after the
296socket has been destroyed. To prevent this problem, this function appends
297the wxSocket to a list of object to be deleted on idle time, after all
298events have been processed. For the same reason, you should avoid creating
299socket objects in the stack.
300
301Destroy calls \helpref{Close}{wxsocketbaseclose} automatically.
302
303\wxheading{Return value}
304
305Always TRUE.
306
307%
308% Discard
309%
310\membersection{wxSocketBase::Discard}\label{wxsocketbasediscard}
311
312\func{wxSocketBase\&}{Discard}{\void}
313
314This function simply deletes all bytes in the incoming queue. This function
315always returns immediately and its operation is not affected by IO flags.
316
317Use \helpref{LastCount}{wxsocketbaselastcount} to verify the number of bytes actually discarded.
318
319If you use \helpref{Error}{wxsocketbaseerror}, it will always return FALSE.
320
321%
322% Error
323%
324\membersection{wxSocketBase::Error}\label{wxsocketbaseerror}
325
326\constfunc{bool}{Error}{\void}
327
328Returns TRUE if an error occurred in the last IO operation.
329
330Use this function to check for an error condition after one of the
331following calls: Discard, Peek, Read, ReadMsg, Unread, Write, WriteMsg.
332
333%
334% GetClientData
335%
336\membersection{wxSocketBase::GetClientData}\label{wxsocketbasegetclientdata}
337
338\constfunc{void *}{GetClientData}{\void}
339
340Returns a pointer of the client data for this socket, as set with
341\helpref{SetClientData}{wxsocketbasesetclientdata}
342
343%
344% GetLocal
345%
346\membersection{wxSocketBase::GetLocal}\label{wxsocketbasegetlocal}
347
348\constfunc{bool}{GetLocal}{\param{wxSockAddress\& }{addr}}
349
350This function returns the local address field of the socket. The local
351address field contains the complete local address of the socket (local
352address, local port, ...).
353
354\wxheading{Return value}
355
356TRUE if no error happened, FALSE otherwise.
357
358%
359% GetFlags
360%
361\membersection{wxSocketBase::GetFlags}\label{wxsocketbasegetflags}
362
363\constfunc{wxSocketFlags}{GetFlags}{\void}
364
365Returns current IO flags, as set with \helpref{SetFlags}{wxsocketbasesetflags}
366
367%
368% GetPeer
369%
370\membersection{wxSocketBase::GetPeer}\label{wxsocketbasegetpeer}
371
372\constfunc{bool}{GetPeer}{\param{wxSockAddress\& }{addr}}
373
374This function returns the peer address field of the socket. The peer
375address field contains the complete peer host address of the socket
376(address, port, ...).
377
378\wxheading{Return value}
379
380TRUE if no error happened, FALSE otherwise.
381
382%
383% InterruptWait
384%
385\membersection{wxSocketBase::InterruptWait}\label{wxsocketbaseinterruptwait}
386
387\func{void}{InterruptWait}{\void}
388
389Use this function to interrupt any wait operation currently in progress.
390Note that this is not intended as a regular way to interrupt a Wait call,
391but only as an escape mechanism for exceptional situations where it is
392absolutely necessary to use it, for example to abort an operation due to
393some exception or abnormal problem. InterruptWait is automatically called
394when you \helpref{Close}{wxsocketbaseclose} a socket (and thus also upon
395socket destruction), so you don't need to use it in these cases.
396
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}
403
404%
405% IsConnected
406%
407\membersection{wxSocketBase::IsConnected}\label{wxsocketbaseisconnected}
408
409\constfunc{bool}{IsConnected}{\void}
410
411Returns TRUE if the socket is connected.
412
413%
414% IsData
415%
416\membersection{wxSocketBase::IsData}\label{wxsocketbaseisdata}
417
418\constfunc{bool}{IsData}{\void}
419
420This function waits until the socket is readable. This might mean that
421queued data is available for reading or, for streamed sockets, that
422the connection has been closed, so that a read operation will complete
423immediately without blocking (unless the {\bf wxSOCKET\_WAITALL} flag
424is set, in which case the operation might still block).
425
426\membersection{wxSocketBase::IsDisconnected}\label{wxsocketbaseisdisconnected}
427
428%
429% IsDisconnected
430%
431\constfunc{bool}{IsDisconnected}{\void}
432
433Returns TRUE if the socket is not connected.
434
435\membersection{wxSocketBase::LastCount}\label{wxsocketbaselastcount}
436
437%
438% LastCount
439%
440\constfunc{wxUint32}{LastCount}{\void}
441
442Returns the number of bytes read or written by the last IO call.
443
444Use this function to get the number of bytes actually transferred
445after using one of the following IO calls: Discard, Peek, Read,
446ReadMsg, Unread, Write, WriteMsg.
447
448%
449% LastError
450%
451\membersection{wxSocketBase::LastError}\label{wxsocketbaselasterror}
452
453\constfunc{wxSocketError}{LastError}{\void}
454
455Returns the last wxSocket error. See \helpref{wxSocket errors}{wxsocketbase}.
456
457Please note that this function merely returns the last error code,
458but it should not be used to determine if an error has occurred (this
459is because successful operations do not change the LastError value).
460Use \helpref{Error}{wxsocketbaseerror} first, in order to determine
461if the last IO call failed. If this returns TRUE, use LastError
462to discover the cause of the error.
463
464%
465% Notify
466%
467\membersection{wxSocketBase::Notify}\label{wxsocketbasenotify}
468
469\func{void}{Notify}{\param{bool}{ notify}}
470
471According to the {\it notify} value, this function enables
472or disables socket events. If {\it notify} is TRUE, the events
473configured with \helpref{SetNotify}{wxsocketbasesetnotify} will
474be sent to the application. If {\it notify} is FALSE; no events
475will be sent.
476
477%
478% Ok
479%
480\membersection{wxSocketBase::Ok}\label{wxsocketbaseok}
481
482\constfunc{bool}{Ok}{\void}
483
484Returns TRUE if the socket is initialized and ready and FALSE in other
485cases.
486
487\wxheading{Remark/Warning}
488
489For \helpref{wxSocketClient}{wxsocketclient}, Ok won't return TRUE unless
490the client is connected to a server.
491
492For \helpref{wxSocketServer}{wxsocketserver}, Ok will return TRUE if the
493server could bind to the specified address and is already listening for
494new connections.
495
496Ok does not check for IO errors;
497use \helpref{Error}{wxsocketbaseerror} instead for that purpose.
498
499%
500% RestoreState
501%
502\membersection{wxSocketBase::RestoreState}\label{wxsocketbaserestorestate}
503
504\func{void}{RestoreState}{\void}
505
506This function restores the previous state of the socket, as saved
507with \helpref{SaveState}{wxsocketbasesavestate}
508
509Calls to SaveState and RestoreState can be nested.
510
511\wxheading{See also}
512
513\helpref{wxSocketBase::SaveState}{wxsocketbasesavestate}
514
515%
516% SaveState
517%
518\membersection{wxSocketBase::SaveState}\label{wxsocketbasesavestate}
519
520\func{void}{SaveState}{\void}
521
522This function saves the current state of the socket in a stack. Socket
523state includes flags, as set with \helpref{SetFlags}{wxsocketbasesetflags},
524event mask, as set with \helpref{SetNotify}{wxsocketbasesetnotify} and
525\helpref{Notify}{wxsocketbasenotify}, user data, as set with
526\helpref{SetClientData}{wxsocketbasesetclientdata}, and asynchronous
527callback settings, as set with \helpref{Callback}{wxsocketbasecallback}
528and \helpref{CallbackData}{wxsocketbasecallbackdata}.
529
530Calls to SaveState and RestoreState can be nested.
531
532\wxheading{See also}
533
534\helpref{wxSocketBase::RestoreState}{wxsocketbaserestorestate}
535
536%
537% SetClientData
538%
539\membersection{wxSocketBase::SetClientData}\label{wxsocketbasesetclientdata}
540
541\func{void}{SetClientData}{\param{void *}{data}}
542
543Sets user-supplied client data for this socket. All socket events will
544contain a pointer to this data, which can be retrieved with
545the \helpref{wxSocketEvent::GetClientData}{wxsocketeventgetclientdata} function.
546
547%
548% SetEventHandler
549%
550\membersection{wxSocketBase::SetEventHandler}\label{wxsocketbaseseteventhandler}
551
552\func{void}{SetEventHandler}{\param{wxEvtHandler\&}{ handler}, \param{int}{ id = -1}}
553
554Sets an event handler to be called when a socket event occurs. The
555handler will be called for those events for which notification is
556enabled with \helpref{SetNotify}{wxsocketbasesetnotify} and
557\helpref{Notify}{wxsocketbasenotify}.
558
559\wxheading{Parameters}
560
561\docparam{handler}{Specifies the event handler you want to use.}
562
563\docparam{id}{The id of socket event.}
564
565\wxheading{See also}
566
567\helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify},
568\helpref{wxSocketBase::Notify}{wxsocketbasenotify},
569\helpref{wxSocketEvent}{wxsocketevent},
570\helpref{wxEvtHandler}{wxevthandler}
571
572%
573% SetFlags
574%
575\membersection{wxSocketBase::SetFlags}\label{wxsocketbasesetflags}
576
577\func{void}{SetFlags}{\param{wxSocketFlags}{ flags}}
578
579Use SetFlags to customize IO operation for this socket.
580The {\it flags} parameter may be a combination of flags ORed toghether.
581The following flags can be used:
582
583\twocolwidtha{7cm}
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.}
589\end{twocollist}
590
591A brief overview on how to use these flags follows.
592
593If no flag is specified (this is the same as {\bf wxSOCKET\_NONE}),
594IO calls will return after some data has been read or written, even
595when the transfer might not be complete. This is the same as issuing
596exactly one blocking low-level call to recv() or send(). Note
597that {\it blocking} here refers to when the function returns, not
598to whether the GUI blocks during this time.
599
600If {\bf wxSOCKET\_NOWAIT} is specified, IO calls will return immediately.
601Read operations will retrieve only available data. Write operations will
602write as much data as possible, depending on how much space is available
603in the output buffer. This is the same as issuing exactly one nonblocking
604low-level call to recv() or send(). Note that {\it nonblocking} here
605refers to when the function returns, not to whether the GUI blocks during
606this time.
607
608If {\bf wxSOCKET\_WAITALL} is specified, IO calls won't return until ALL
609the data has been read or written (or until an error occurs), blocking if
610necessary, and issuing several low level calls if necessary. This is the
611same as having a loop which makes as many blocking low-level calls to
612recv() or send() as needed so as to transfer all the data. Note
613that {\it blocking} here refers to when the function returns, not
614to whether the GUI blocks during this time.
615
616The {\bf wxSOCKET\_BLOCK} flag controls whether the GUI blocks during
617IO operations. If this flag is specified, the socket will not yield
618during IO calls, so the GUI will remain blocked until the operation
619completes. If it is not used, then the application must take extra
620care to avoid unwanted reentrance.
621
622So:
623
624{\bf wxSOCKET\_NONE} will try to read at least SOME data, no matter how much.
625
626{\bf wxSOCKET\_NOWAIT} will always return immediately, even if it cannot
627read or write ANY data.
628
629{\bf wxSOCKET\_WAITALL} will only return when it has read or written ALL
630the data.
631
632{\bf wxSOCKET\_BLOCK} has nothing to do with the previous flags and
633it controls whether the GUI blocks.
634
635%
636% SetNotify
637%
638\membersection{wxSocketBase::SetNotify}\label{wxsocketbasesetnotify}
639
640\func{void}{SetNotify}{\param{wxSocketEventFlags}{ flags}}
641
642SetNotify specifies which socket events are to be sent to the event handler.
643The {\it flags} parameter may be combination of flags ORed toghether. The
644following flags can be used:
645
646\twocolwidtha{7cm}
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}
652\end{twocollist}
653
654For example:
655
656\begin{verbatim}
657 sock.SetNotify(wxSOCKET_INPUT_FLAG | wxSOCKET_LOST_FLAG);
658 sock.Notify(TRUE);
659\end{verbatim}
660
661In this example, the user will be notified about incoming socket data and
662whenever the connection is closed.
663
664For more information on socket events see \helpref{wxSocket events}{wxsocketbase}.
665
666%
667% SetTimeout
668%
669\membersection{wxSocketBase::SetTimeout}\label{wxsocketbasesettimeout}
670
671\func{void}{SetTimeout}{\param{int }{seconds}}
672
673This function sets the default socket timeout in seconds. This timeout
674applies to all IO calls, and also to the \helpref{Wait}{wxsocketbasewait} family
675of functions if you don't specify a wait interval. Initially, the default
676timeout is 10 minutes.
677
678%
679% Peek
680%
681\membersection{wxSocketBase::Peek}\label{wxsocketbasepeek}
682
683\func{wxSocketBase\&}{Peek}{\param{void *}{ buffer}, \param{wxUint32}{ nbytes}}
684
685This function peeks a buffer of {\it nbytes} bytes from the socket.
686Peeking a buffer doesn't delete it from the socket input queue.
687
688Use \helpref{LastCount}{wxsocketbaselastcount} to verify the number of bytes actually peeked.
689
690Use \helpref{Error}{wxsocketbaseerror} to determine if the operation succeeded.
691
692\wxheading{Parameters}
693
694\docparam{buffer}{Buffer where to put peeked data.}
695
696\docparam{nbytes}{Number of bytes.}
697
698\wxheading{Return value}
699
700Returns a reference to the current object.
701
702\wxheading{Remark/Warning}
703
704The exact behaviour of wxSocketBase::Peek depends on the combination
705of flags being used. For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}
706
707\wxheading{See also}
708
709\helpref{wxSocketBase::Error}{wxsocketbaseerror},
710\helpref{wxSocketBase::LastError}{wxsocketbaselasterror},
711\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount},
712\helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}
713
714%
715% Read
716%
717\membersection{wxSocketBase::Read}\label{wxsocketbaseread}
718
719\func{wxSocketBase\&}{Read}{\param{void *}{ buffer}, \param{wxUint32}{ nbytes}}
720
721This function reads a buffer of {\it nbytes} bytes from the socket.
722
723Use \helpref{LastCount}{wxsocketbaselastcount} to verify the number of bytes actually read.
724
725Use \helpref{Error}{wxsocketbaseerror} to determine if the operation succeeded.
726
727\wxheading{Parameters}
728
729\docparam{buffer}{Buffer where to put read data.}
730
731\docparam{nbytes}{Number of bytes.}
732
733\wxheading{Return value}
734
735Returns a reference to the current object.
736
737\wxheading{Remark/Warning}
738
739The exact behaviour of wxSocketBase::Read depends on the combination
740of flags being used. For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}.
741
742\wxheading{See also}
743
744\helpref{wxSocketBase::Error}{wxsocketbaseerror},
745\helpref{wxSocketBase::LastError}{wxsocketbaselasterror},
746\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount},
747\helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}
748
749%
750% ReadMsg
751%
752\membersection{wxSocketBase::ReadMsg}\label{wxsocketbasereadmsg}
753
754\func{wxSocketBase\&}{ReadMsg}{\param{void *}{ buffer}, \param{wxUint32}{ nbytes}}
755
756This function reads a buffer sent by \helpref{WriteMsg}{wxsocketbasewritemsg}
757on a socket. If the buffer passed to the function isn't big enough, the
758remaining bytes will be discarded. This function always waits for the
759buffer to be entirely filled, unless an error occurs.
760
761Use \helpref{LastCount}{wxsocketbaselastcount} to verify the number of bytes actually read.
762
763Use \helpref{Error}{wxsocketbaseerror} to determine if the operation succeeded.
764
765\wxheading{Parameters}
766
767\docparam{buffer}{Buffer where to put read data.}
768
769\docparam{nbytes}{Size of the buffer.}
770
771\wxheading{Return value}
772
773Returns a reference to the current object.
774
775\wxheading{Remark/Warning}
776
777wxSocketBase::ReadMsg will behave as if the {\bf wxSOCKET\_WAITALL} flag
778was always set and it will always ignore the {\bf wxSOCKET\_NOWAIT} flag.
779The exact behaviour of ReadMsg depends on the {\bf wxSOCKET\_BLOCK} flag.
780For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}.
781
782\wxheading{See also}
783
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}
789
790%
791% Unread
792%
793\membersection{wxSocketBase::Unread}\label{wxsocketbaseunread}
794
795\func{wxSocketBase\&}{Unread}{\param{const void *}{ buffer}, \param{wxUint32}{ nbytes}}
796
797This function unreads a buffer. That is, the data in the buffer is put back
798in the incoming queue. This function is not affected by wxSocket flags.
799
800If you use \helpref{LastCount}{wxsocketbaselastcount}, it will always return {\it nbytes}.
801
802If you use \helpref{Error}{wxsocketbaseerror}, it will always return FALSE.
803
804\wxheading{Parameters}
805
806\docparam{buffer}{Buffer to be unread.}
807
808\docparam{nbytes}{Number of bytes.}
809
810\wxheading{Return value}
811
812Returns a reference to the current object.
813
814\wxheading{See also}
815
816\helpref{wxSocketBase::Error}{wxsocketbaseerror},
817\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount},
818\helpref{wxSocketBase::LastError}{wxsocketbaselasterror}
819
820%
821% Wait
822%
823\membersection{wxSocketBase::Wait}\label{wxsocketbasewait}
824
825\func{bool}{Wait}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
826
827This function waits until any of the following conditions is TRUE:
828
829\begin{itemize}
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.
835\end{itemize}
836
837Note that it is recommended to use the individual Wait functions
838to wait for the required condition, instead of this one.
839
840\wxheading{Parameters}
841
842\docparam{seconds}{Number of seconds to wait.
843If -1, it will wait for the default timeout,
844as set with \helpref{SetTimeout}{wxsocketbasesettimeout}.}
845
846\docparam{millisecond}{Number of milliseconds to wait.}
847
848\wxheading{Return value}
849
850Returns TRUE when any of the above conditions is satisfied,
851FALSE if the timeout was reached.
852
853\wxheading{See also}
854
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}
861
862%
863% WaitForLost
864%
865\membersection{wxSocketBase::WaitForLost}\label{wxsocketbasewaitforlost}
866
867\func{bool}{Wait}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
868
869This function waits until the connection is lost. This may happen if
870the peer gracefully closes the connection or if the connection breaks.
871
872\wxheading{Parameters}
873
874\docparam{seconds}{Number of seconds to wait.
875If -1, it will wait for the default timeout,
876as set with \helpref{SetTimeout}{wxsocketbasesettimeout}.}
877
878\docparam{millisecond}{Number of milliseconds to wait.}
879
880\wxheading{Return value}
881
882Returns TRUE if the connection was lost, FALSE if the timeout was reached.
883
884\wxheading{See also}
885
886\helpref{wxSocketBase::InterruptWait}{wxsocketbaseinterruptwait},
887\helpref{wxSocketBase::Wait}{wxsocketbasewait}
888
889%
890% WaitForRead
891%
892\membersection{wxSocketBase::WaitForRead}\label{wxsocketbasewaitforread}
893
894\func{bool}{WaitForRead}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
895
896This function waits until the socket is readable. This might mean that
897queued data is available for reading or, for streamed sockets, that
898the connection has been closed, so that a read operation will complete
899immediately without blocking (unless the {\bf wxSOCKET\_WAITALL} flag
900is set, in which case the operation might still block).
901
902\wxheading{Parameters}
903
904\docparam{seconds}{Number of seconds to wait.
905If -1, it will wait for the default timeout,
906as set with \helpref{SetTimeout}{wxsocketbasesettimeout}.}
907
908\docparam{millisecond}{Number of milliseconds to wait.}
909
910\wxheading{Return value}
911
912Returns TRUE if the socket becomes readable, FALSE on timeout.
913
914\wxheading{See also}
915
916\helpref{wxSocketBase::InterruptWait}{wxsocketbaseinterruptwait},
917\helpref{wxSocketBase::Wait}{wxsocketbasewait}
918
919%
920% WaitForWrite
921%
922\membersection{wxSocketBase::WaitForWrite}\label{wxsocketbasewaitforwrite}
923
924\func{bool}{WaitForWrite}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
925
926This function waits until the socket becomes writable. This might mean that
927the socket is ready to send new data, or for streamed sockets, that the
928connection has been closed, so that a write operation is guaranteed to
929complete immediately (unless the {\bf wxSOCKET\_WAITALL} flag is set,
930in which case the operation might still block).
931
932\wxheading{Parameters}
933
934\docparam{seconds}{Number of seconds to wait.
935If -1, it will wait for the default timeout,
936as set with \helpref{SetTimeout}{wxsocketbasesettimeout}.}
937
938\docparam{millisecond}{Number of milliseconds to wait.}
939
940\wxheading{Return value}
941
942Returns TRUE if the socket becomes writable, FALSE on timeout.
943
944\wxheading{See also}
945
946\helpref{wxSocketBase::InterruptWait}{wxsocketbaseinterruptwait},
947\helpref{wxSocketBase::Wait}{wxsocketbasewait}
948
949%
950% Write
951%
952\membersection{wxSocketBase::Write}\label{wxsocketbasewrite}
953
954\func{wxSocketBase\&}{Write}{\param{const void *}{ buffer}, \param{wxUint32}{ nbytes}}
955
956This function writes a buffer of {\it nbytes} bytes to the socket.
957
958Use \helpref{LastCount}{wxsocketbaselastcount} to verify the number of bytes actually written.
959
960Use \helpref{Error}{wxsocketbaseerror} to determine if the operation succeeded.
961
962\wxheading{Parameters}
963
964\docparam{buffer}{Buffer with the data to be sent.}
965
966\docparam{nbytes}{Number of bytes.}
967
968\wxheading{Return value}
969
970Returns a reference to the current object.
971
972\wxheading{Remark/Warning}
973
974The exact behaviour of wxSocketBase::Write depends on the combination
975of flags being used. For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}.
976
977\wxheading{See also}
978
979\helpref{wxSocketBase::Error}{wxsocketbaseerror},
980\helpref{wxSocketBase::LastError}{wxsocketbaselasterror},
981\helpref{wxSocketBase::LastCount}{wxsocketbaselastcount},
982\helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}
983
984%
985% WriteMsg
986%
987\membersection{wxSocketBase::WriteMsg}\label{wxsocketbasewritemsg}
988
989\func{wxSocketBase\&}{WriteMsg}{\param{const void *}{ buffer}, \param{wxUint32}{ nbytes}}
990
991This function writes a buffer of {\it nbytes} bytes from the socket, but it
992writes a short header before so that \helpref{ReadMsg}{wxsocketbasereadmsg}
993knows 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
995buffer to be sent, unless an error occurs.
996
997Use \helpref{LastCount}{wxsocketbaselastcount} to verify the number of bytes actually written.
998
999Use \helpref{Error}{wxsocketbaseerror} to determine if the operation succeeded.
1000
1001\wxheading{Parameters}
1002
1003\docparam{buffer}{Buffer with the data to be sent.}
1004
1005\docparam{nbytes}{Number of bytes to send.}
1006
1007\wxheading{Return value}
1008
1009Returns a reference to the current object.
1010
1011\wxheading{Remark/Warning}
1012
1013wxSocketBase::WriteMsg will behave as if the {\bf wxSOCKET\_WAITALL} flag
1014was always set and it will always ignore the {\bf wxSOCKET\_NOWAIT} flag.
1015The exact behaviour of WriteMsg depends on the {\bf wxSOCKET\_BLOCK} flag.
1016For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}.
1017
1018\wxheading{See also}
1019
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}
1025
1026
1027% ---------------------------------------------------------------------------
1028% CLASS wxSocketClient
1029% ---------------------------------------------------------------------------
1030
1031\section{\class{wxSocketClient}}\label{wxsocketclient}
1032
1033\wxheading{Derived from}
1034
1035\helpref{wxSocketBase}{wxsocketbase}
1036
1037\wxheading{Include files}
1038
1039<wx/socket.h>
1040
1041\latexignore{\rtfignore{\wxheading{Members}}}
1042
1043% ---------------------------------------------------------------------------
1044% Members
1045% ---------------------------------------------------------------------------
1046%
1047% wxSocketClient
1048%
1049\membersection{wxSocketClient::wxSocketClient}
1050
1051\func{}{wxSocketClient}{\param{wxSocketFlags}{ flags = wxSOCKET\_NONE}}
1052
1053Constructor.
1054
1055\wxheading{Parameters}
1056
1057\docparam{flags}{Socket flags (See \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags})}
1058
1059%
1060% ~wxSocketClient
1061%
1062\membersection{wxSocketClient::\destruct{wxSocketClient}}
1063
1064\func{}{\destruct{wxSocketClient}}{\void}
1065
1066Destructor. Please see \helpref{wxSocketBase::Destroy}{wxsocketbasedestroy}.
1067
1068%
1069% Connect
1070%
1071\membersection{wxSocketClient::Connect}\label{wxsocketclientconnect}
1072
1073\func{bool}{Connect}{\param{wxSockAddress\&}{ address}, \param{bool}{ wait = TRUE}}
1074
1075Connects to a server using the specified address.
1076
1077If {\it wait} is TRUE, Connect will wait until the connection
1078completes. {\bf Warning:} This will block the GUI.
1079
1080If {\it wait} is FALSE, Connect will try to establish the connection and
1081return immediately, without blocking the GUI. When used this way, even if
1082Connect returns FALSE, the connection request can be completed later.
1083To detect this, use \helpref{WaitOnConnect}{wxsocketclientwaitonconnect},
1084or catch {\bf wxSOCKET\_CONNECTION} events (for successful establishment)
1085and {\bf wxSOCKET\_LOST} events (for connection failure).
1086
1087\wxheading{Parameters}
1088
1089\docparam{address}{Address of the server.}
1090
1091\docparam{wait}{If TRUE, waits for the connection to complete.}
1092
1093\wxheading{Return value}
1094
1095Returns TRUE if the connection is established and no error occurs.
1096
1097If {\it wait} was TRUE, and Connect returns FALSE, an error occurred
1098and the connection failed.
1099
1100If {\it wait} was FALSE, and Connect returns FALSE, you should still
1101be prepared to handle the completion of this connection request, either
1102with \helpref{WaitOnConnect}{wxsocketclientwaitonconnect} or by
1103watching {\bf wxSOCKET\_CONNECTION} and {\bf wxSOCKET\_LOST} events.
1104
1105\wxheading{See also}
1106
1107\helpref{wxSocketClient::WaitOnConnect}{wxsocketclientwaitonconnect},
1108\helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify},
1109\helpref{wxSocketBase::Notify}{wxsocketbasenotify}
1110
1111%
1112% WaitOnConnect
1113%
1114\membersection{wxSocketClient::WaitOnConnect}\label{wxsocketclientwaitonconnect}
1115
1116\func{bool}{WaitOnConnect}{\param{long}{ seconds = -1}, \param{long}{ milliseconds = 0}}
1117
1118Wait until a connection request completes, or until the specified timeout
1119elapses. Use this function after issuing a call
1120to \helpref{Connect}{wxsocketclientconnect} with {\it wait} set to FALSE.
1121
1122\wxheading{Parameters}
1123
1124\docparam{seconds}{Number of seconds to wait.
1125If -1, it will wait for the default timeout,
1126as set with \helpref{SetTimeout}{wxsocketbasesettimeout}.}
1127
1128\docparam{millisecond}{Number of milliseconds to wait.}
1129
1130\wxheading{Return value}
1131
1132WaitOnConnect returns TRUE if the connection request completes. This
1133does not necessarily mean that the connection was succesfully established;
1134it might also happen that the connection was refused by the peer. Use
1135\helpref{IsConnected}{wxsocketbaseisconnected} to distinguish between
1136these two situations.
1137
1138If the timeout elapses, WaitOnConnect returns FALSE.
1139
1140These semantics allow code like this:
1141
1142\begin{verbatim}
1143// Issue the connection request
1144client->Connect(addr, FALSE);
1145
1146// Wait until the request completes or until we decide to give up
1147bool waitmore = TRUE;
1148while ( !client->WaitOnConnect(seconds, millis) && waitmore )
1149{
1150 // possibly give some feedback to the user,
1151 // and update waitmore as needed.
1152}
1153bool success = client->IsConnected();
1154\end{verbatim}
1155
1156\wxheading{See also}
1157
1158\helpref{wxSocketClient::Connect}{wxsocketclientconnect},
1159\helpref{wxSocketBase::InterruptWait}{wxsocketbaseinterruptwait},
1160\helpref{wxSocketBase::IsConnected}{wxsocketbaseisconnected}
1161
1162% ---------------------------------------------------------------------------
1163% CLASS: wxSocketEvent
1164% ---------------------------------------------------------------------------
1165\section{\class{wxSocketEvent}}\label{wxsocketevent}
1166
1167This event class contains information about socket events.
1168
1169\wxheading{Derived from}
1170
1171\helpref{wxEvent}{wxevent}
1172
1173\wxheading{Include files}
1174
1175<wx/socket.h>
1176
1177\wxheading{Event table macros}
1178
1179To process a socket event, use these event handler macros to direct input
1180to member functions that take a wxSocketEvent argument.
1181
1182\twocolwidtha{7cm}
1183\begin{twocollist}\itemsep=0pt
1184\twocolitem{{\bf EVT\_SOCKET(id, func)}}{Process a socket event, supplying the member function.}
1185\end{twocollist}
1186
1187\wxheading{See also}
1188
1189\helpref{wxSocketBase}{wxsocketbase},
1190\helpref{wxSocketClient}{wxsocketclient},
1191\helpref{wxSocketServer}{wxsocketserver}
1192
1193\latexignore{\rtfignore{\wxheading{Members}}}
1194
1195\membersection{wxSocketEvent::wxSocketEvent}
1196
1197\func{}{wxSocketEvent}{\param{int}{ id = 0}}
1198
1199Constructor.
1200
1201\membersection{wxSocketEvent::GetClientData}\label{wxsocketeventgetclientdata}
1202
1203\func{void *}{GetClientData}{\void}
1204
1205Gets the client data of the socket which generated this event, as
1206set with \helpref{wxSocketBase::SetClientData}{wxsocketbasesetclientdata}.
1207
1208\membersection{wxSocketEvent::GetSocket}\label{wxsocketeventgetsocket}
1209
1210\constfunc{wxSocketBase *}{GetSocket}{\void}
1211
1212Returns the socket object to which this event refers to. This makes
1213it possible to use the same event handler for different sockets.
1214
1215\membersection{wxSocketEvent::GetSocketEvent}\label{wxsocketeventgetsocketevent}
1216
1217\constfunc{wxSocketNotify}{GetSocketEvent}{\void}
1218
1219Returns the socket event type.
1220