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

📄 ksock.h

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 H
字号:
/* This file is part of the KDE libraries    Copyright (C) 1997 Torben Weis (weis@kde.org)    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    Library General Public License for more details.    You should have received a copy of the GNU Library General Public License    along with this library; see the file COPYING.LIB.  If not, write to    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,    Boston, MA 02111-1307, USA.*//* * $Id: ksock.h,v 1.1 2003/09/08 19:42:05 jasonk Exp $ * * $Log: ksock.h,v $ * Revision 1.1  2003/09/08 19:42:05  jasonk * Addition of packages directory and associated files. * * Revision 1.1.1.1  2003/08/07 21:18:32  jasonk * Initial import of PIXIL into new cvs repository. * * Revision 1.1.1.1  2003/06/23 22:04:23  jasonk * * * Revision 1.1.1.1  2000/07/07 16:10:59  jasonk * Initial import of ViewML * * Revision 1.20  1998/11/11 00:02:55  thufir * addes ability to set a connect Time Out, breaks binary compatability * * Revision 1.19  1998/09/01 20:21:33  kulow * I renamed all old qt header files to the new versions. I think, this looks * nicer (and gives the change in configure a sense :) * * Revision 1.18  1998/08/22 20:02:47  kulow * make kdecore have nicer output, when compiled with -Weffc++ :) * * Revision 1.17  1998/03/28 11:02:08  kulow * undef NULL for egcs's sake * * Revision 1.16  1998/03/26 22:06:41  torben * Torben: Little bug fix in copy constructor * * Revision 1.15  1998/01/24 11:13:58  kulow * changed the order of the header files * * Revision 1.14  1998/01/24 00:12:02  kulow * added sys/socket.h * * Revision 1.13  1998/01/23 02:23:40  torben * Torben: Supports UNIX domain sockets now. * * Revision 1.12  1998/01/18 14:39:05  kulow * reverted the changes, Jacek commited. * Only the RCS comments were affected, but to keep them consistent, I * thought, it's better to revert them. * I checked twice, that only comments are affected ;) * * Revision 1.10  1997/12/18 01:56:25  torben * Torben: Secure string operations. Use instead of QString::sprintf * * Revision 1.9  1997/10/21 20:44:53  kulow * removed all NULLs and replaced it with 0L or "". * There are some left in mediatool, but this is not C++ * * Revision 1.8  1997/10/16 11:15:03  torben * Kalle: Copyright headers * kdoctoolbar removed * * Revision 1.7  1997/09/18 12:16:05  kulow * corrected some header dependencies. Removed most of them in drag.h and put * them in drag.cpp. Now it should compile even under SunOS 4.4.1 ;) * * Revision 1.6  1997/08/30 08:32:56  kdecvs * Coolo: changed the location of the include files to get rid of the * hardcoded HAVE_STDC_HEADERS * * Revision 1.5  1997/07/27 13:43:59  kalle * Even more SGI and SCC patches, security patch for kapp, various fixes for ksock * * Revision 1.4  1997/07/25 19:46:43  kalle * SGI changes * * Revision 1.3  1997/07/18 05:49:18  ssk * Taj: All kdecore doc now in javadoc format (hopefully). * * Revision 1.2  1997/06/25 14:22:13  ssk * Taj: updated some documentation. * * Revision 1.1.1.1  1997/04/13 14:42:42  cvsuser * Source imported * * Revision 1.1.1.1  1997/04/09 00:28:07  cvsuser * Sources imported * * Revision 1.4  1997/01/15 20:34:14  kalle * merged changes from 0.52 * * Revision 1.3  1996/12/07 22:23:07  kalle * autoconf, documentation * * Revision 1.2  1996/12/07 18:32:00  kalle * RCS header * * * The KDE Socket Classes. * * Torben Weis * weis@stud.uni-frankfurt.de * * Part of the KDE Project. */#ifndef KSOCK_H#define KSOCK_H#ifdef HAVE_CONFIG_H#include <config.h>#endif#ifdef NULL#undef NULL#endif#define NULL 0#include <sys/types.h>#include <sys/socket.h> #include <sys/un.h>#include <netinet/in.h>#include <qsocketnotifier.h>/**  * A TCP/IP client socket. You can connect this socket to any internet address.  * * The socket gives you three signals: When ready for reading/writing or  * if the connection is broken.  Using socket() you get a file descriptor * which you can use with usual unix commands like write(..) or read(...).  * If you have already such a socket identifier you can construct a KSocket * on this identifier.  *   * If socket() delivers a value of -1 or less, the connection  * had no success. * * @author Torben Weis <weis@uni-frankfurt.de> * @version $Id: ksock.h,v 1.1 2003/09/08 19:42:05 jasonk Exp $ * @short a TCP/IP client socket. */class KSocket : public QObject{    Q_OBJECTpublic:    /**      * Create a KSocket with the provided file descriptor.     * @param _sock	the file descriptor to use.     */    KSocket( int _sock )	: sock(_sock), domain(0), 	readNotifier(0), writeNotifier(0) {}        /**      * Create a socket and connect to a host.     * @param _host	the remote host to which to connect.     * @param _port	the port on the remote host.     */    KSocket( const char *_host, unsigned short int _port );    KSocket( const char *_host, unsigned short int _port, int timeOut);        /**      * Connects to a UNIX domain socket.     * @param _path    the filename of the socket     */    KSocket( const char *_path );    /**      * Destructor. Closes the socket if it is still open.     */    ~KSocket();        /**      * Returns a file descriptor for this socket.     */    int socket() const { return sock; }        /**      * Enable the socket for reading.     *     * If you enable read mode, the socket will emit the signal     * readEvent whenever there is something to read out of this     * socket.     */    void enableRead( bool );        /**      * Enable the socket for writing.     *     * If you enable write mode, the socket will emit the signal     * writeEvent whenever the socket is ready for writing.     */    void enableWrite( bool );        /**     * Return address.     */    unsigned long getAddr();    signals:    /**      * Data has arrived for reading.     *     * This signal will only be raised if enableRead( TRUE ) was called     * first.     */    void readEvent( KSocket * );        /**      * Socket is ready for writing.     *     * This signal will only be raised if enableWrite( TRUE ) was called     * first.     */    void writeEvent( KSocket * );        /**      * Raised when the connection is broken.     */    void closeEvent( KSocket * );    public slots:    /**      * Connected to the writeNotifier.     */    void slotWrite( int );        /**      * Connected to the readNotifier.     */    void slotRead( int );    protected:    bool connect( const char *_host, unsigned short int _port );    bool connect( const char *_path );      bool init_sockaddr( const char *hostname, unsigned short int port );        struct sockaddr_in server_name;    struct sockaddr_un unix_addr;    /******************************************************     * The file descriptor for this socket. sock may be -1.     * This indicates that it is not connected.     */    int sock;    int domain;      QSocketNotifier *readNotifier;    QSocketNotifier *writeNotifier;private:    int timeOut;        KSocket(const KSocket&);    KSocket& operator=(const KSocket&);};/** * Monitor a port for incoming TCP/IP connections. * * You can use a KServerSocket to listen on a port for incoming * connections. When a connection arrived in the port, a KSocket * is created and the signal accepted is raised. Make sure you * always connect to this signal. If you dont the ServerSocket will * create new KSocket's and no one will delete them! * * If socket() is -1 or less the socket was not created properly. * * @author Torben Weis <weis@stud.uni-frankfurt.de> * @version $Id: ksock.h,v 1.1 2003/09/08 19:42:05 jasonk Exp $ * @short Monitor a port for incoming TCP/IP connections.*/class KServerSocket : public QObject{    Q_OBJECTpublic:    /**     * Constructor.     * @param _port	the port number to monitor for incoming connections.     */    KServerSocket( int _port );    /**     * Creates a UNIX domain server socket.     */    KServerSocket( const char *_path );      /**      * Destructor. Closes the socket if it was not already closed.     */    ~KServerSocket();        /**      * Get the file descriptor assoziated with the socket.     */    int socket() const { return sock; }    /**      * Returns the port number which is being monitored.     */    unsigned short getPort();    /**      * The address.     */    unsigned long getAddr();public slots:     /**      * Called when someone connected to our port.     */    virtual void slotAccept( int );signals:    /**     * A connection has been accepted.     * It is your task to delete the KSocket if it is no longer needed.     */    void accepted( KSocket* );protected:    bool init( short unsigned int );    bool init( const char* _path );      /**      * Notifies us when there is something to read on the port.     */    QSocketNotifier *notifier;        /**      * The file descriptor for this socket. sock may be -1.     * This indicates that it is not connected.     */        int sock;      int domain;private:    KServerSocket(const KServerSocket&);    KServerSocket& operator=(const KServerSocket&);};#endif

⌨️ 快捷键说明

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