⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qsocketnotifier.3qt

📁 Linux下的基于X11的图形开发环境。
💻 3QT
字号:
'\" t.TH QSocketNotifier 3qt "9 December 2002" "Trolltech AS" \" -*- nroff -*-.\" Copyright 1992-2001 Trolltech AS.  All rights reserved.  See the.\" license file included in the distribution for a complete license.\" statement..\".ad l.nh.SH NAMEQSocketNotifier \- Support for socket callbacks.SH SYNOPSIS\fC#include <qsocketnotifier.h>\fR.PPInherits QObject..PP.SS "Public Members".in +1c.ti -1c.BI "enum \fBType\fR { Read, Write, Exception }".br.ti -1c.BI "\fBQSocketNotifier\fR ( int socket, Type type, QObject * parent = 0, const char * name = 0 )".br.ti -1c.BI "\fB~QSocketNotifier\fR ()".br.ti -1c.BI "int \fBsocket\fR () const".br.ti -1c.BI "Type \fBtype\fR () const".br.ti -1c.BI "bool \fBisEnabled\fR () const".br.ti -1c.BI "virtual void \fBsetEnabled\fR ( bool enable )".br.in -1c.SS "Signals".in +1c.ti -1c.BI "void \fBactivated\fR ( int socket )".br.in -1c.SH DESCRIPTIONThe QSocketNotifier class provides support for socket callbacks..PPThis class makes it possible to write asynchronous socket-based code in Qt. Using synchronous socket operations blocks the program, which is clearly not acceptable for an event-driven GUI program..PPOnce you have opened a non-blocking socket (whether for TCP, UDP, a UNIX-domain socket, or any other protocol family your operating system supports), you can create a socket notifier to monitor the socket. Then you connect the activated() signal to the slot you want to be called when a socket event occurs..PPThere are three types of socket notifiers (read, write and exception); you must specify one of these in the constructor..PPThe type specifies when the activated() signal is to be emitted: <ol type=1>.IP 1QSocketNotifier::Read - There is data to be read (socket read event)..IP 2QSocketNotifier::Write - Data can be written (socket write event)..IP 3QSocketNofifier::Exception - An exception has occurred (socket exception event). We recommend against using this..PPFor example, if you need to monitor both reads and writes for the same socket you must create two socket notifiers..PPExample:.PP.nf.br        int sockfd;                                 // socket identifier.br        struct sockaddr_in sa;                      // should contain host address.br        sockfd = socket( AF_INET, SOCK_STREAM, 0 ); // create TCP socket.br        // make the socket non-blocking here, usually using fcntl( O_NONBLOCK ).br        ::connect( sockfd, (struct sockaddr*)&sa,   // connect to host.br                   sizeof(sa) );                    // NOT QObject::connect()!.br        QSocketNotifier *sn;.br        sn = new QSocketNotifier( sockfd, QSocketNotifier::Read, parent );.br        QObject::connect( sn, SIGNAL(activated(int)),.br                          myObject, SLOT(dataReceived()) );.br.fi.PPThe optional \fIparent\fR argument can be set to make the socket notifier a child of any QObject, e.g. a widget. This will ensure that it is automatically destroyed when the widget is destroyed..PPFor read notifiers it makes little sense to connect the activated() signal to more than one slot because the data can be read from the socket only once..PPAlso observe that if you do not read all the available data when the read notifier fires, it fires again and again..PPIf you disable the read notifier your program may deadlock. (The same applies to exception notifiers if you must use them, for instance if you \fImust\fR use TCP urgent data.).PPFor write notifiers, immediately disable the notifier after the activated() signal has been received and you have sent the data to be written on the socket. When you have more data to be written, enable it again to get a new activated() signal. The exception is if the socket data writing operation (send() or equivalent) fails with a "would block" error, which means that some buffer is full and you must wait before sending more data. In that case you do not need to disable and re-enable the write notifier; it will fire again as soon as the system allows more data to be sent..PPThe behavior of a write notifier that is left in enabled state after having emitting the first activated() signal (and no "would block" error has occurred) is undefined. Depending on the operating system, it may fire on every pass of the event loop or not at all..PPIf you need a time-out for your sockets you can use either timer events or the QTimer class..PPSocket action is detected in the main event loop of Qt. The X11 version of Qt has a single UNIX select() call that incorporates all socket notifiers and the X socket..PPNote that on XFree86 for OS/2, select() works only in the thread in which main() is running; you should therefore use that thread for GUI operations..PPSee also QSocket, QServerSocket, QSocketDevice, and Input/Output and Networking..SS "Member Type Documentation".SH "QSocketNotifier::Type".TP\fCQSocketNotifier::Read\fR.TP\fCQSocketNotifier::Write\fR.TP\fCQSocketNotifier::Exception\fR.SH MEMBER FUNCTION DOCUMENTATION.SH "QSocketNotifier::QSocketNotifier ( int socket, Type type, QObject * parent = 0, const char * name = 0 )"Constructs a socket notifier called \fIname\fR, with the parent, \fIparent\fR. It watches \fIsocket\fR for \fItype\fR events, and enables it..PPIt is generally advisable to explicitly enable or disable the socket notifier, especially for write notifiers..PPSee also setEnabled() and isEnabled()..SH "QSocketNotifier::~QSocketNotifier ()"Destroys the socket notifier..SH "void QSocketNotifier::activated ( int socket )\fC [signal]\fR"This signal is emitted under certain conditions specified by the notifier type(): <ol type=1>.TPQSocketNotifier::Read - There is data to be read (socket read event)..TPQSocketNotifier::Write - Data can be written (socket write event)..TPQSocketNofifier::Exception - An exception has occurred (socket exception event)..PPThe \fIsocket\fR argument is the socket identifier..PPSee also type() and socket()..SH "bool QSocketNotifier::isEnabled () const"Returns TRUE if the notifier is enabled; otherwise returns FALSE..PPSee also setEnabled()..SH "void QSocketNotifier::setEnabled ( bool enable )\fC [virtual]\fR"Enables the notifier if \fIenable\fR is TRUE or disables it if \fIenable\fR is FALSE..PPThe notifier is enabled by default..PPIf the notifier is enabled, it emits the activated() signal whenever a socket event corresponding to its type occurs. If it is disabled, it ignores socket events (the same effect as not creating the socket notifier)..PPWrite notifiers should normally be disabled immediately after the activated() signal has been emitted; see discussion of write notifiers in the class description above..PPSee also isEnabled() and activated()..SH "int QSocketNotifier::socket () const"Returns the socket identifier specified to the constructor..PPSee also type()..SH "Type QSocketNotifier::type () const"Returns the socket event type specified to the constructor: QSocketNotifier::Read, QSocketNotifier::Write, or QSocketNotifier::Exception..PPSee also socket()..SH "SEE ALSO".BR http://doc.trolltech.com/qsocketnotifier.html.BR http://www.trolltech.com/faq/tech.html.SH COPYRIGHTCopyright 1992-2001 Trolltech AS, http://www.trolltech.com.  See thelicense file included in the distribution for a complete licensestatement..SH AUTHORGenerated automatically from the source code..SH BUGSIf you find a bug in Qt, please report it as described in.BR http://doc.trolltech.com/bughowto.html .Good bug reports help us to help you. Thank you..PThe definitive Qt documentation is provided in HTML format; it islocated at $QTDIR/doc/html and can be read using Qt Assistant or witha web browser. This man page is provided as a convenience for thoseusers who prefer man pages, although this format is not officiallysupported by Trolltech. .PIf you find errors in this manual page, please report them to.BR qt-bugs@trolltech.com .Please include the name of the manual page (qsocketnotifier.3qt) and the Qtversion (3.1.1).

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -