]> git.saurik.com Git - wxWidgets.git/blob - docs/latex/wx/socket.tex
note about WX_DEFIN_EOBJARRAY added
[wxWidgets.git] / docs / latex / wx / socket.tex
1 \section{\class{wxSocketBase}}\label{wxsocketbase}
2
3 \wxheading{Derived from}
4
5 \helpref{wxEvtHandler}{wxevthandler}
6
7 \wxheading{Include files}
8
9 <wx/socket.h>
10
11 \wxheading{wxSocket errors}
12
13 \twocolwidtha{7cm}
14 \begin{twocollist}\itemsep=0pt
15 \twocolitem{{\bf wxSOCKET\_NOERROR}}{No error happened.}
16 \twocolitem{{\bf wxSOCKET\_INVOP}}{Invalid operation.}
17 \twocolitem{{\bf wxSOCKET\_IOERR}}{Input/Output error.}
18 \twocolitem{{\bf wxSOCKET\_INVADDR}}{Invalid address passed to wxSocket.}
19 \twocolitem{{\bf wxSOCKET\_INVSOCK}}{Invalid socket (uninitialized).}
20 \twocolitem{{\bf wxSOCKET\_NOHOST}}{No corresponding host.}
21 \twocolitem{{\bf wxSOCKET\_INVPORT}}{Invalid port.}
22 \twocolitem{{\bf wxSOCKET\_WOULDBLOCK}}{The socket is non-blocking and the operation would block.}
23 \twocolitem{{\bf wxSOCKET\_TIMEDOUT}}{The timeout for this operation expired.}
24 \twocolitem{{\bf wxSOCKET\_MEMERR}}{Memory exhausted.}
25 \end{twocollist}%
26
27 \wxheading{wxSocket events}
28
29 \twocolwidtha{7cm}
30 \begin{twocollist}\itemsep=0pt
31 \twocolitem{{\bf wxSOCKET\_INPUT}}{Some data has arrived to the socket.}
32 \twocolitem{{\bf wxSOCKET\_OUTPUT}}{The socket is ready to be written to.}
33 \twocolitem{{\bf wxSOCKET\_CONNECTION}}{Incoming connection arrival (server), or connection establishment (client).}
34 \twocolitem{{\bf wxSOCKET\_LOST}}{The connection has been closed.}
35 \twocolitem{{\bf wxSOCKET\_MAX\_EVENT}}{This should never happen but the compiler may complain about it.}
36 \end{twocollist}%
37
38 A brief note on how to use these events:
39
40 The {\bf wxSOCKET\_INPUT} event will be issued when the incoming queue
41 was empty and new data arrives, but NOT if new data arrives when there
42 was data waiting in the incoming queue.
43
44 The {\bf wxSOCKET\_OUTPUT} event is issued when a socket is first connected
45 with Connect or accepted with Accept, and then, only after an output operation
46 fails because the output buffer was full, and buffer space becomes available
47 again.
48
49 The {\bf wxSOCKET\_CONNECTION} event is issued when a connection request
50 completes (client) or when a new connection arrives at the pending
51 connections queue (server).
52
53 The {\bf wxSOCKET\_LOST} event is issued when a close indication is
54 received for the socket. This means that the connection broke down or
55 that it was closed by the peer.
56
57 % ---------------------------------------------------------------------------
58 % Event handling
59 % ---------------------------------------------------------------------------
60 \wxheading{Event handling}
61
62 To process events from a socket, use the following event handler macro to direct
63 input to member functions that take a \helpref{wxSocketEvent}{wxsocketevent} argument.
64
65 \twocolwidtha{7cm}%
66 \begin{twocollist}\itemsep=0pt
67 \twocolitem{{\bf EVT\_SOCKET(id, func)}}{A socket event occured.}
68 \end{twocollist}%
69
70 % ---------------------------------------------------------------------------
71 % See also ...
72 % ---------------------------------------------------------------------------
73 \wxheading{See also}
74
75 \helpref{wxSocketEvent}{wxsocketevent},
76 \helpref{wxSocketClient}{wxsocketclient},
77 \helpref{wxSocketServer}{wxsocketserver}
78
79 % ---------------------------------------------------------------------------
80 % Members
81 % ---------------------------------------------------------------------------
82 \latexignore{\rtfignore{\wxheading{Members}}}
83
84 \membersection{wxSocketBase::wxSocketBase}
85
86 \func{}{wxSocketBase}{\void}
87
88 Default constructor. Don't use it; use \helpref{wxSocketClient}{wxsocketclient}
89 or \helpref{wxSocketServer}{wxsocketserver}.
90
91 \membersection{wxSocketBase::\destruct{wxSocketBase}}
92
93 \func{}{\destruct{wxSocketBase}}{\void}
94
95 Destroys the wxSocketBase object.
96
97 % ---------------------------------------------------------------------------
98 % State functions
99 % ---------------------------------------------------------------------------
100
101 %
102 % SetFlags
103 %
104
105 \membersection{wxSocketBase::SetFlags}\label{wxsocketbasesetflags}
106
107 \func{void}{SetFlags}{\param{wxSocketBase::wxSockFlags}{ flags}}
108
109 \twocolwidtha{7cm}
110 \begin{twocollist}\itemsep=0pt
111 \twocolitem{{\bf wxSOCKET\_NONE}}{Normal functionnality.}
112 \twocolitem{{\bf wxSOCKET\_NOWAIT}}{Get the available data in the input queue and return immediately.}
113 \twocolitem{{\bf wxSOCKET\_WAITALL}}{Wait for all required data unless an error occurs.}
114 \twocolitem{{\bf wxSOCKET\_BLOCK}}{Block the GUI (do not wxYield) while reading/writing data.}
115 \end{twocollist}
116
117 A brief overview on how to use these flags follows.
118
119 If no flag is specified (this is the same as {\bf wxSOCKET\_NONE}),
120 IO calls will return after some data has been read or written, even
121 when the transfer might not be complete. This is the same as issuing
122 exactly one blocking low-level call to recv() or send(). Note that
123 blocking here refers to when the function returns, not to whether
124 the GUI blocks during this time.
125
126 If {\bf wxSOCKET\_NOWAIT} is specified, IO calls will return immediately.
127 Read operations will retrieve only available data. Write operations will
128 write as much data as possible, depending on how much space is available
129 in the output buffer. This is the same as issuing exactly one nonblocking
130 low-level call to recv() or send(). Note that nonblocking here refers to
131 when the function returns, not to whether the GUI blocks during this time.
132
133 If {\bf wxSOCKET\_WAITALL} is specified, IO calls won't return until ALL
134 the data has been read or written (or until an error occurs), blocking if
135 necessary, and issuing several low level calls if necessary. This is the
136 same as having a loop which makes as many blocking low-level calls to
137 recv() or send() as needed so as to transfer all the data. Note that
138 "blocking" here refers to when the function returns, not to whether
139 the GUI blocks during this time.
140
141 The {\bf wxSOCKET\_BLOCK} controls whether the GUI blocks during IO
142 operations. If this flag is not used, then the application must take
143 extra care to avoid unwanted reentrance.
144
145 So:
146
147 {\bf wxSOCKET\_NONE} will try to read SOME data, no matter how much.
148
149 {\bf wxSOCKET\_NOWAIT} will always return immediately, even if it cannot
150 read or write ANY data.
151
152 {\bf wxSOCKET\_WAITALL} will only return when it has read or written ALL
153 the data.
154
155 {\bf wxSOCKET\_BLOCK} has nothing to do with the previous flags and
156 it control whether the GUI blocks.
157
158 %
159 % SetNotify
160 %
161 \membersection{wxSocketBase::SetNotify}\label{wxsocketbasesetnotify}
162
163 \func{void}{SetNotify}{\param{wxSocketEventFlags}{ flags}}
164
165 SetNotify specifies which socket events are to be sent to the event handler.
166 The {\it flags} parameter is a combination of flags ORed toghether. The
167 following flags can be used:
168
169 \twocolwidtha{7cm}
170 \begin{twocollist}\itemsep=0pt
171 \twocolitem{{\bf wxSOCKET\_INPUT\_FLAG}}{to receive wxSOCKET\_INPUT}
172 \twocolitem{{\bf wxSOCKET\_OUTPUT\_FLAG}}{to receive wxSOCKET\_OUTPUT}
173 \twocolitem{{\bf wxSOCKET\_CONNECTION\_FLAG}}{to receive wxSOCKET\_CONNECTION}
174 \twocolitem{{\bf wxSOCKET\_LOST\_FLAG}}{to receive wxSOCKET\_LOST}
175 \end{twocollist}%
176
177 For example:
178
179 \begin{verbatim}
180 sock.SetNotify(wxSOCKET_INPUT_FLAG | wxSOCKET_LOST_FLAG);
181 \end{verbatim}
182
183 In this example, the user will be notified about incoming socket data and
184 whenever the connection is closed.
185
186 For more information on socket events see \helpref{wxSocket events}{wxsocketbase}.
187
188 %
189 % SetTimeout
190 %
191 \membersection{wxSocketBase::SetTimeout}{wxsocketbasesettimeout}
192
193 \func{void}{SetTimeout}{\param{int }{seconds}}
194
195 This function sets the default socket timeout in seconds. This
196 timeout applies to IO calls and also to Wait functions if you
197 don't specify a wait interval. If you never use SetTimeout, the
198 default timeout will be 10 minutes.
199
200 %
201 % Notify
202 %
203 \membersection{wxSocketBase::Notify}\label{wxsocketbasenotify}
204
205 \func{void}{Notify}{\param{bool}{ notify}}
206
207 Notify will enable (notify is TRUE) or disable (notify is FALSE) the propagation
208 of socket events.
209
210 %
211 % Ok
212 %
213
214 \membersection{wxSocketBase::Ok}\label{wxsocketbaseok}
215
216 \constfunc{bool}{Ok}{\void}
217
218 Returns TRUE if the socket is initialized and ready and FALSE in other
219 cases.
220
221 \membersection{wxSocketBase::Error}\label{wxsocketbaseerror}
222
223 \constfunc{bool}{Error}{\void}
224
225 Returns TRUE if an error occured in the last IO operation.
226
227 The following operations update the Error() status:
228 Read, Write, ReadMsg, WriteMsg, Peek, Unread, Discard.
229
230 \membersection{wxSocketBase::IsConnected}\label{wxsocketbaseconnected}
231
232 \constfunc{bool}{IsConnected}{\void}
233
234 Returns TRUE if the socket is connected.
235
236 \membersection{wxSocketBase::IsData}\label{wxsocketbaseisdata}
237
238 \constfunc{bool}{IsData}{\void}
239
240 Returns TRUE if there is data available to be read.
241
242 \membersection{wxSocketBase::IsDisconnected}\label{wxsocketbasedisconnected}
243
244 \constfunc{bool}{IsDisconnected}{\void}
245
246 Returns TRUE if the socket is disconnected.
247
248 \membersection{wxSocketBase::IsNoWait}\label{wxsocketbasenowait}
249
250 \constfunc{bool}{IsNoWait}{\void}
251
252 Returns TRUE if the socket mustn't wait.
253
254 \membersection{wxSocketBase::LastCount}\label{wxsocketbaselastcount}
255
256 \constfunc{wxUint32}{LastCount}{\void}
257
258 Returns the number of bytes read or written by the last IO call.
259
260 The following operations update the LastCount() value:
261 Read, Write, ReadMsg, WriteMsg, Peek, Unread, Discard.
262
263 \membersection{wxSocketBase::LastError}\label{wxsocketbaselasterror}
264
265 \constfunc{wxSocketError}{LastError}{\void}
266
267 Returns the last wxSocket error. See \helpref{wxSocket errors}{wxsocketbase}.
268
269 Please note that this function merely returns the last error code,
270 but it should not be used to determine if an error has occured (this
271 is because successful operations do not change tha LastError value).
272 Use Error, instead of LastError, to determine if the last IO call
273 failed. If Error returns TRUE, use LastError to discover the
274 cause of the error.
275
276 % ---------------------------------------------------------------------------
277 % IO calls
278 % ---------------------------------------------------------------------------
279 %
280 % Peek
281 %
282 \membersection{wxSocketBase::Peek}\label{wxsocketbasepeek}
283
284 \func{wxSocketBase\&}{Peek}{\param{char *}{ buffer}, \param{wxUint32}{ nbytes}}
285
286 This function peeks a buffer of {\it nbytes} bytes from the socket. Peeking a buffer
287 doesn't delete it from the system socket in-queue.
288
289 Use LastCount to verify the number of bytes actually peeked.
290
291 Use Error to determine if the operation succeeded.
292
293 \wxheading{Parameters}
294
295 \docparam{buffer}{Buffer where to put peeked data.}
296
297 \docparam{nbytes}{Number of bytes.}
298
299 \wxheading{Return value}
300
301 Returns a reference to the current object.
302
303 \wxheading{Remark/Warning}
304
305 The exact behaviour of wxSocketBase::Peek() depends on the combination
306 of flags being used. For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}
307
308 \wxheading{See also}
309
310 \helpref{wxSocketBase::Error}{wxsocketbaseerror},
311 \helpref{wxSocketBase::LastError}{wxsocketbaselasterror},
312 \helpref{wxSocketBase::LastCount}{wxsocketbaselastcount},
313 \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}
314
315 %
316 % Read
317 %
318 \membersection{wxSocketBase::Read}\label{wxsocketbaseread}
319
320 \func{wxSocketBase\&}{Read}{\param{char *}{ buffer}, \param{wxUint32}{ nbytes}}
321
322 This function reads a buffer of {\it nbytes} bytes from the socket.
323
324 Use LastCount to verify the number of bytes actually read.
325
326 Use Error to determine if the operation succeeded.
327
328 \wxheading{Parameters}
329
330 \docparam{buffer}{Buffer where to put read data.}
331
332 \docparam{nbytes}{Number of bytes.}
333
334 \wxheading{Return value}
335
336 Returns a reference to the current object.
337
338 \wxheading{Remark/Warning}
339
340 The exact behaviour of wxSocketBase::Read() depends on the combination
341 of flags being used. For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}.
342
343 \wxheading{See also}
344
345 \helpref{wxSocketBase::Error}{wxsocketbaseerror},
346 \helpref{wxSocketBase::LastError}{wxsocketbaselasterror},
347 \helpref{wxSocketBase::LastCount}{wxsocketbaselastcount},
348 \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}
349
350 %
351 % Write
352 %
353 \membersection{wxSocketBase::Write}\label{wxsocketbasewrite}
354
355 \func{wxSocketBase\&}{Write}{\param{const char *}{ buffer}, \param{wxUint32}{ nbytes}}
356
357 This function writes a buffer of {\it nbytes} bytes to the socket.
358
359 Use LastCount to verify the number of bytes actually written.
360
361 Use Error to determine if the operation succeeded.
362
363 \wxheading{Parameters}
364
365 \docparam{buffer}{Buffer with the data to be sent.}
366
367 \docparam{nbytes}{Number of bytes.}
368
369 \wxheading{Return value}
370
371 Returns a reference to the current object.
372
373 \wxheading{Remark/Warning}
374
375 The exact behaviour of wxSocketBase::Write() depends on the combination
376 of flags being used. For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}.
377
378 \wxheading{See also}
379
380 \helpref{wxSocketBase::Error}{wxsocketbaseerror},
381 \helpref{wxSocketBase::LastError}{wxsocketbaselasterror},
382 \helpref{wxSocketBase::LastCount}{wxsocketbaselastcount},
383 \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}
384
385 %
386 % WriteMsg
387 %
388 \membersection{wxSocketBase::WriteMsg}\label{wxsocketbasewritemsg}
389
390 \func{wxSocketBase\&}{WriteMsg}{\param{const char *}{ buffer}, \param{wxUint32}{ nbytes}}
391
392 This function writes a buffer of {\it nbytes} bytes from the socket, but it
393 writes a short header before so that ReadMsg can alloc the right size for
394 the buffer. So, a buffer sent with WriteMsg {\bf must} be read with ReadMsg.
395 This function always waits for the entire buffer to be sent, unless an
396 error occurs.
397
398 Use LastCount to verify the number of bytes actually written.
399
400 Use Error to determine if the operation succeeded.
401
402 \wxheading{Parameters}
403
404 \docparam{buffer}{Buffer with the data to be sent.}
405
406 \docparam{nbytes}{Number of bytes.}
407
408 \wxheading{Return value}
409
410 Returns a reference to the current object.
411
412 \wxheading{Remark/Warning}
413
414 wxSocketBase::WriteMsg() will behave as if the wxSOCKET_WAITALL flag was always set
415 and it will always ignore the wxSOCKET_NOWAIT flag. The exact behaviour of WriteMsg
416 depends on the wxSOCKET_BLOCK flag. For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}.
417
418 \wxheading{See also}
419
420 \helpref{wxSocketBase::Error}{wxsocketbaseerror},
421 \helpref{wxSocketBase::LastError}{wxsocketbaselasterror},
422 \helpref{wxSocketBase::LastCount}{wxsocketbaselastcount},
423 \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags},
424 \helpref{wxSocketBase::ReadMsg}{wxsocketbasereadmsg}
425
426 %
427 % ReadMsg
428 %
429 \membersection{wxSocketBase::ReadMsg}\label{wxsocketbasereadmsg}
430
431 \func{wxSocketBase\&}{ReadMsg}{\param{char *}{ buffer}, \param{wxUint32}{ nbytes}}
432
433 This function reads a buffer sent by WriteMsg on a socket. If the buffer passed
434 to the function isn't big enough, the remaining bytes will be discarded. This
435 function always waits for the buffer to be entirely filled, unless an error occurs.
436
437 Use LastCount to verify the number of bytes actually read.
438
439 Use Error to determine if the operation succeeded.
440
441 \wxheading{Parameters}
442
443 \docparam{buffer}{Buffer where to put read data.}
444
445 \docparam{nbytes}{Number of bytes allocated for the buffer.}
446
447 \wxheading{Return value}
448
449 Returns a reference to the current object.
450
451 \wxheading{Remark/Warning}
452
453 wxSocketBase::ReadMsg() will behave as if the wxSOCKET_WAITALL flag was always set
454 and it will always ignore the wxSOCKET_NOWAIT flag. The exact behaviour of ReadMsg
455 depends on the wxSOCKET_SPEED flag. For a detailed explanation, see \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags}.
456
457 \wxheading{See also}
458
459 \helpref{wxSocketBase::Error}{wxsocketbaseerror},
460 \helpref{wxSocketBase::LastError}{wxsocketbaselasterror},
461 \helpref{wxSocketBase::LastCount}{wxsocketbaselastcount},
462 \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags},
463 \helpref{wxSocketBase::WriteMsg}{wxsocketbasewritemsg}
464
465 %
466 % Unread
467 %
468 \membersection{wxSocketBase::Unread}\label{wxsocketbaseunread}
469
470 \func{wxSocketBase\&}{Unread}{\param{const char *}{ buffer}, \param{wxUint32}{ nbytes}}
471
472 This function unreads a buffer. That is, the data in the buffer is put back
473 in the incoming queue. This function is not affected by wxSocket flags.
474
475 If you use LastCount, it will always return {\it nbytes}.
476
477 If you use Error, it will always return FALSE.
478
479 \wxheading{Parameters}
480
481 \docparam{buffer}{Buffer to be unread.}
482
483 \docparam{nbytes}{Number of bytes.}
484
485 \wxheading{Return value}
486
487 Returns a reference to the current object.
488
489 \wxheading{See also}
490
491 \helpref{wxSocketBase::Error}{wxsocketbaseerror},
492 \helpref{wxSocketBase::LastCount}{wxsocketbaselastcount},
493 \helpref{wxSocketBase::LastError}{wxsocketbaselasterror}
494
495 %
496 % Discard
497 %
498 \membersection{wxSocketBase::Discard}\label{wxsocketbasediscard}
499
500 \func{wxSocketBase\&}{Discard}{\void}
501
502 This function simply deletes all bytes in the incoming queue. This function
503 doesn't wait. That is, it will behave as if the wxSOCKET\_NOWAIT flag was set. The
504 wxSOCKET\_SPEED and wxSOCKET\_WAITALL flags have no effect on this function.
505
506 Use LastCount to see the number of bytes discarded.
507
508 If you use Error, it will always return FALSE.
509
510 % ---------------------------------------------------------------------------
511 % Wait functions
512 % ---------------------------------------------------------------------------
513 \membersection{wxSocketBase::Wait}\label{wxsocketbasewait}
514
515 \func{bool}{Wait}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
516
517 This function waits until one of the following conditions is true: there
518 is data available for reading; the output buffer is empty (you can send
519 new data); the connection has been lost; an incoming connection arrived
520 (only for servers); a connection request has completed (only for clients).
521
522 \wxheading{Parameters}
523
524 \docparam{seconds}{Number of seconds to wait. If -1, it will wait for the default timeout set with SetTimeout.}
525
526 \docparam{millisecond}{Number of milliseconds to wait.}
527
528 \wxheading{Return value}
529
530 Returns TRUE if an event occured, FALSE if the timeout was reached.
531
532 \wxheading{See also}
533
534 \helpref{wxSocketBase::WaitForRead}{wxsocketbasewaitforread},
535 \helpref{wxSocketBase::WaitForWrite}{wxsocketbasewaitforwrite},
536 \helpref{wxSocketBase::WaitForLost}{wxsocketbasewaitforlost}
537
538 %
539 % WaitForRead
540 %
541 \membersection{wxSocketBase::WaitForRead}\label{wxsocketbasewaitforread}
542
543 \func{bool}{WaitForRead}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
544
545 This function waits until there is data available to be read.
546
547 \wxheading{Parameters}
548
549 \docparam{seconds}{Number of seconds to wait. If -1, it will wait for the default timeout set with SetTimeout.}
550
551 \docparam{millisecond}{Number of milliseconds to wait.}
552
553 \wxheading{Return value}
554
555 Returns TRUE if there is data to be read, FALSE if the timeout was reached.
556
557 \wxheading{See also}
558
559 \helpref{wxSocketBase::Wait}{wxsocketbasewait},
560 \helpref{wxSocketBase::WaitForWrite}{wxsocketbasewaitforwrite},
561 \helpref{wxSocketBase::WaitForLost}{wxsocketbasewaitforlost}
562
563 %
564 % WaitForWrite
565 %
566 \membersection{wxSocketBase::WaitForWrite}\label{wxsocketbasewaitforwrite}
567
568 \func{bool}{WaitForWrite}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
569
570 This function waits until you can write to the socket.
571
572 \wxheading{Parameters}
573
574 \docparam{seconds}{Number of seconds to wait. If -1, it will wait for the default timeout set with SetTimeout.}
575
576 \docparam{millisecond}{Number of milliseconds to wait.}
577
578 \wxheading{Return value}
579
580 Returns TRUE if you can write to the socket, FALSE if the timeout was reached.
581
582 \wxheading{See also}
583
584 \helpref{wxSocketBase::Wait}{wxsocketbasewait},
585 \helpref{wxSocketBase::WaitForRead}{wxsocketbasewaitforread},
586 \helpref{wxSocketBase::WaitForLost}{wxsocketbasewaitforlost}
587
588 %
589 % WaitForLost
590 %
591 \membersection{wxSocketBase::WaitForLost}\label{wxsocketbasewaitforlost}
592
593 \func{bool}{Wait}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
594
595 This function waits until the connection is lost. This may happen if the
596 peer closes the connection or if the connection breaks.
597
598 \wxheading{Parameters}
599
600 \docparam{seconds}{Number of seconds to wait. If -1, it will wait for the default timeout set with SetTimeout.}
601
602 \docparam{millisecond}{Number of milliseconds to wait.}
603
604 \wxheading{Return value}
605
606 Returns TRUE if the connection was lost, FALSE if the timeout was reached.
607
608 \wxheading{See also}
609
610 \helpref{wxSocketBase::WaitForRead}{wxsocketbasewaitforread},
611 \helpref{wxSocketBase::WaitForWrite}{wxsocketbasewaitforwrite},
612 \helpref{wxSocketBase::WaitForLost}{wxsocketbasewaitforlost}
613
614 % ---------------------------------------------------------------------------
615 % Socket state
616 % ---------------------------------------------------------------------------
617
618 %
619 % RestoreState
620 %
621 \membersection{wxSocketBase::RestoreState}\label{wxsocketbaserestorestate}
622
623 \func{void}{RestoreState}{\void}
624
625 This function restores the previous state of the socket, as saved
626 with SaveState.
627
628 Calls to SaveState / RestoreState can be nested.
629
630 \wxheading{See also}
631
632 \helpref{wxSocketBase::SaveState}{wxsocketbasesavestate}
633
634 %
635 % SaveState
636 %
637 \membersection{wxSocketBase::SaveState}\label{wxsocketbasesavestate}
638
639 \func{void}{SaveState}{\void}
640
641 This function saves the current state of the socket object in a stack:
642 actually it saves all flags (those set with SetFlags, SetNotify, Notfy)
643 and the state of the asynchronous callbacks (Callback, CallbackData).
644
645 Calls to SaveState / RestoreState can be nested.
646
647 \wxheading{See also}
648
649 \helpref{wxSocketBase::RestoreState}{wxsocketbaserestorestate}
650
651 %
652 % GetLocal
653 %
654 \membersection{wxSocketBase::GetLocal}{wxsocketbasegetlocal}
655
656 \constfunc{bool}{GetLocal}{\param{wxSockAddress\& }{addr_man}}
657
658 This function returns the local address field of the socket. The local
659 address field contains the complete local address of the socket (local
660 address, local port, ...).
661
662 \wxheading{Return value}
663
664 It returns TRUE if no errors happened, FALSE otherwise.
665
666 %
667 % GetPeer
668 %
669 \membersection{wxSocketBase::GetPeer}{wxsocketbasegetlocal}
670
671 \constfunc{bool}{GetPeer}{\param{wxSockAddress\& }{addr_man}}
672
673 This function returns the peer address field of the socket. The peer
674 address field contains the complete peer host address of the socket
675 (address, port, ...).
676
677 \wxheading{Return value}
678
679 It returns TRUE if no errors happened, FALSE otherwise.
680
681 % ---------------------------------------------------------------------------
682 % Socket callbacks
683 % ---------------------------------------------------------------------------
684 \membersection{wxSocketBase::SetEventHandler}\label{wxsocketbaseseteventhandler}
685
686 \func{void}{SetEventHandler}{\param{wxEvtHandler\&}{ evt\_hdlr}, \param{int}{ id = -1}}
687
688 Sets an event handler to be called when a socket event occurs. The handler
689 will be called for those events for which notification is enabled with
690 SetNotify and Notify.
691
692 You can also specify a C callback to be called when an event occurs. See
693 Callback and CallbackData.
694
695 \wxheading{Parameters}
696
697 \docparam{evt\_hdlr}{Specifies the event handler you want to use.}
698
699 \docparam{id}{The id of socket event.}
700
701 \wxheading{See also}
702
703 \helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify},
704 \helpref{wxSocketBase::Notify}{wxsocketbasenotify},
705 \helpref{wxSocketEvent}{wxsocketevent},
706 \helpref{wxEvtHandler}{wxevthandler},
707 \helpref{wxSocketBase::Callback}{wxsocketbasecallback},
708 \helpref{wxSocketBase::CallbackData}{wxsocketbasecallbackdata}
709
710 \membersection{wxSocketBase::Callback}\label{wxsocketbasecallback}
711
712 \func{wxSocketBase::wxSockCbk}{Callback}{\param{wxSocketBase::wxSockCbk}{ callback}}
713
714 You can setup a C callback to be called when an event occurs. The callback
715 will be called only for those events for which notification has been enabled
716 with Notify and SetNotify. The prototype of the callback must be as follows:
717
718 \begin{verbatim}
719 void SocketCallback(wxSocketBase& sock,wxSocketNotify evt,char *cdata);
720 \end{verbatim}
721
722 The first parameter is a reference to the socket object in which the event
723 occured. The second parameter tells you which event occured. (See \helpref{wxSocket events}{wxsocketbase}).
724 The third parameter is the user data you specified using \helpref{CallbackData}{wxsocketbasecallbackdata}.
725
726 \wxheading{Return value}
727
728 A pointer to the previous callback.
729
730 \wxheading{See also}
731
732 \helpref{wxSocketBase::CallbackData}{wxsocketbasecallbackdata},
733 \helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify},
734 \helpref{wxSocketBase::Notify}{wxsocketbasenotify}
735
736 \membersection{wxSocketBase::CallbackData}\label{wxsocketbasecallbackdata}
737
738 \func{char *}{CallbackData}{\param{char *}{cdata}}
739
740 This function sets the the user data which will be passed to a \helpref{C callback}{wxsocketbasecallback}.
741
742 \wxheading{Return value}
743
744 A pointer to the previous user data.
745
746 \helpref{wxSocketBase::Callback}{wxsocketbasecallback},
747 \helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify},
748 \helpref{wxSocketBase::Notify}{wxsocketbasenotify}
749
750 % ---------------------------------------------------------------------------
751 % CLASS wxSocketClient
752 % ---------------------------------------------------------------------------
753 \section{\class{wxSocketClient}}\label{wxsocketclient}
754
755 \wxheading{Derived from}
756
757 \helpref{wxSocketBase}{wxsocketbase}
758
759 \wxheading{Include files}
760
761 <wx/socket.h>
762
763 % ---------------------------------------------------------------------------
764 % Members
765 % ---------------------------------------------------------------------------
766 %
767 % wxSocketClient
768 %
769 \membersection{wxSocketClient::wxSocketClient}
770
771 \func{}{wxSocketClient}{\param{wxSockFlags}{ flags = wxSocketBase::NONE}}
772
773 Constructs a new wxSocketClient.
774
775 \wxheading{Parameters}
776
777 \docparam{flags}{Socket flags (See \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags})}
778
779 %
780 % ~wxSocketClient
781 %
782 \membersection{wxSocketClient::\destruct{wxSocketClient}}
783
784 \func{}{\destruct{wxSocketClient}}{\void}
785
786 Destroys a wxSocketClient object.
787
788 %
789 % Connect
790 %
791 \membersection{wxSocketClient::Connect}\label{wxsocketclientconnect}
792
793 \func{bool}{Connect}{\param{wxSockAddress\&}{ address}, \param{bool}{ wait = TRUE}}
794
795 Connects to a server using the specified address.
796
797 If {\it wait} is TRUE, Connect will wait until the connection completes and
798 the socket is ready to send or receive data, or until an event occurs.
799
800 {\bf Warning !} This will block the GUI.
801
802 If {\it wait} is FALSE, Connect will try to establish the connection and
803 return immediately, without blocking the GUI. When used this way, even if
804 Connect returns FALSE, the connection request can be completed later.
805 To detect this, use WaitConnection, or watch "connection" events (for
806 succesful establishment) and "lost" events (for connection failure).
807
808 \wxheading{Parameters}
809
810 \docparam{address}{Address of the server.}
811
812 \docparam{wait}{If true, waits for the connection to be ready.}
813
814 \wxheading{Return value}
815
816 Returns TRUE if the connection is established and no error occurs.
817
818 If {\it wait} was TRUE, and Connect returns FALSE, an error occured
819 and the connection failed.
820
821 If {\it wait} was FALSE, and Connect returns FALSE, you should still
822 be prepared to handle the completion of this connection request, either
823 with WaitOnConnect or by watching "connection" and "lost" events.
824
825 \wxheading{See also}
826
827 \helpref{wxSocketClient::WaitOnConnect}{wxsocketclientwaitonconnect},
828 \helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify},
829 \helpref{wxSocketBase::Notify}{wxsocketbasenotify}
830
831 %
832 % WaitOnConnect
833 %
834 \membersection{wxSocketClient::WaitOnConnect}\label{wxsocketclientwaitonconnect}
835
836 \func{bool}{WaitOnConnect}{\param{long}{ seconds = -1}, \param{long}{ milliseconds = 0}}
837
838 Wait until the connection is succesfully established or until it fails.
839 Use this function after a call to Connect with {\it wait} set to FALSE.
840
841 \wxheading{Parameters}
842
843 \docparam{seconds}{Number of seconds to wait. If -1, it will wait for the default timeout set with SetTimeout.}
844
845 \docparam{millisecond}{Number of milliseconds to wait.}
846
847 \wxheading{Return value}
848
849 If the connection is succesfully established, it returns TRUE.
850
851 If the timeout expires, or if the connection fails, it returns FALSE.
852
853 \wxheading{See also}
854
855 \helpref{wxSocketClient::Connect}{wxsocketclientconnect}
856
857 % ---------------------------------------------------------------------------
858 % CLASS: wxSocketEvent
859 % ---------------------------------------------------------------------------
860 \section{\class{wxSocketEvent}}\label{wxsocketevent}
861
862 This event class contains information about socket events.
863
864 \wxheading{Derived from}
865
866 \helpref{wxEvent}{wxevent}
867
868 \wxheading{Include files}
869
870 <wx/socket.h>
871
872 \wxheading{Event table macros}
873
874 To process a socket event, use these event handler macros to direct input to member
875 functions that take a wxSocketEvent argument.
876
877 \twocolwidtha{7cm}
878 \begin{twocollist}\itemsep=0pt
879 \twocolitem{{\bf EVT\_SOCKET(id, func)}}{Process a socket event, supplying the member function.}
880 \end{twocollist}%
881
882 [TODO:]
883 A brief note on how to use events.
884 The wxSOCKET_INPUT event is generated when the
885
886 \wxheading{See also}
887
888 \helpref{wxSocketBase}{wxsocketbase},
889 \helpref{wxSocketClient}{wxsocketclient},
890 \helpref{wxSocketServer}{wxsocketserver}
891
892 \latexignore{\rtfignore{\wxheading{Members}}}
893
894 \membersection{wxSocketEvent::wxSocketEvent}
895
896 \func{}{wxSocketEvent}{\param{int}{ id = 0}}
897
898 Constructor.
899
900 \membersection{wxSocketEvent::SocketEvent}\label{wxsocketeventsocketevent}
901
902 \constfunc{wxSocketNotify}{SocketEvent}{\void}
903
904 Returns the socket event type.
905
906 % ---------------------------------------------------------------------------
907 % CLASS: wxSocketServer
908 % ---------------------------------------------------------------------------
909 \section{\class{wxSocketServer}}\label{wxsocketserver}
910
911 \wxheading{Derived from}
912
913 \helpref{wxSocketBase}{wxsocketbase}
914
915 \wxheading{Include files}
916
917 <wx/socket.h>
918
919 % ---------------------------------------------------------------------------
920 % Members
921 % ---------------------------------------------------------------------------
922 \latexignore{\rtfignore{\wxheading{Members}}}
923
924 %
925 % wxSocketServer
926 %
927 \membersection{wxSocketServer::wxSocketServer}\label{wxsocketserverconstr}
928
929 \func{}{wxSocketServer}{\param{wxSockAddress\&}{ address}, \param{wxSockFlags}{ flags = wxSocketBase::NONE}}
930
931 Constructs a new wxSocketServer.
932
933 \wxheading{Parameters}
934
935 \docparam{address}{Specifies the local address for the server (e.g. port number).}
936
937 \docparam{flags}{Socket flags (See \helpref{wxSocketBase::SetFlags}{wxsocketbasesetflags})}
938
939 %
940 % ~wxSocketServer
941 %
942 \membersection{wxSocketServer::\destruct{wxSocketServer}}
943
944 \func{}{\destruct{wxSocketServer}}{\void}
945
946 Destroys a wxSocketServer object (it doesn't close the accepted connections).
947
948 %
949 % Accept
950 %
951 \membersection{wxSocketServer::Accept}\label{wxsocketserveraccept}
952
953 \func{wxSocketBase *}{Accept}{\param{bool}{ wait = TRUE}}
954
955 Creates a new object wxSocketBase and accepts an incoming connection.
956
957 If {\it wait} is TRUE and there are no pending connections to be
958 accepted, it will wait for the next incoming connection to arrive.
959 {\bf Warning !} This will block the GUI.
960
961 If {\it wait} is FALSE, it will try to accept a pending connection
962 if there is one, but it will always return immediately without
963 blocking the GUI. If you want to use Accept in this way, you can
964 either check for incoming connections with WaitForAccept or watch
965 "connection" events, then call Accept once you know that there is
966 an incoming connection waiting to be accepted.
967
968 \wxheading{Return value}
969
970 Returns an opened socket connection, or NULL if an error occured or
971 if the {\it wait} parameter was FALSE and there were no pending
972 connections.
973
974 \wxheading{See also}
975
976 \helpref{wxSocketServer::WaitForAccept}{wxsocketserverwaitforaccept},
977 \helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify},
978 \helpref{wxSocketBase::Notify}{wxsocketbasenotify},
979 \helpref{wxSocketServer::AcceptWith}{wxsocketserveracceptwith}
980
981 %
982 % AcceptWith
983 %
984 \membersection{wxSocketServer::AcceptWith}\label{wxsocketserveracceptwith}
985
986 \func{bool}{AcceptWith}{\param{wxSocketBase\&}{ socket}, \param{bool}{ wait = TRUE}}
987
988 Accept an incoming connection using the specified socket object.
989 This is useful when someone wants to inherit wxSocketBase.
990
991 \wxheading{Parameters}
992
993 \docparam{socket}{Socket to be initialized}
994
995 \wxheading{Return value}
996
997 Returns TRUE on success, or FALSE if an error occured or if the
998 {\it wait} parameter was FALSE and there were no pending
999 connections.
1000
1001 \helpref{wxSocketServer::WaitForAccept}{wxsocketserverwaitforaccept},
1002 \helpref{wxSocketBase::SetNotify}{wxsocketbasesetnotify},
1003 \helpref{wxSocketBase::Notify}{wxsocketbasenotify},
1004 \helpref{wxSocketServer::Accept}{wxsocketserveraccept}
1005
1006 %
1007 % WaitForAccept
1008 %
1009 \membersection{wxSocketServer::WaitForAccept}\label{wxsocketserverwaitforaccept}
1010
1011 \func{bool}{WaitForAccept}{\param{long}{ seconds = -1}, \param{long}{ millisecond = 0}}
1012
1013 This function waits for an incoming connection. Use it if you want to call
1014 Accept or AcceptWith with {\it wait} set to FALSE, to detect when an incoming
1015 connection is waiting to be accepted.
1016
1017 \wxheading{Parameters}
1018
1019 \docparam{seconds}{Number of seconds to wait. If -1, it will wait for the default timeout set with SetTimeout.}
1020
1021 \docparam{millisecond}{Number of milliseconds to wait.}
1022
1023 \wxheading{Return value}
1024
1025 Returns TRUE if an incoming connection arrived, FALSE if the timeout expired.
1026
1027 \wxheading{See also}
1028
1029 \helpref{wxSocketServer::Accept}{wxsocketserveraccept},
1030 \helpref{wxSocketServer::AcceptWith}{wxsocketserveracceptwith}
1031