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

📄 ipcserver.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
字号:
#include "ipcserver.h"#include <qsocket.h>#include <qvariant.h>#include <qimage.h>#include <qpalette.h>#include <qapplication.h>class IpcSocket : public QSocket{    Q_OBJECTpublic:    IpcSocket( QObject *parent) : QSocket( parent )    {	packetSize = 0;	connect( this, SIGNAL(readyRead()), SLOT(read()) );    }signals:    void receivedText( const QString& );    void receivedPixmap( const QPixmap& );private slots:    void read()    {	Q_ULONG bytesAvail = bytesAvailable();	for ( ;; ) {	    if ( packetSize == 0 ) {		QDataStream ds( this );		if ( bytesAvail < 4 )		    return;		ds >> packetSize;		bytesAvail -= 4;	    } else {		if ( bytesAvail < packetSize )		    return;		// read the packet in a byte array to be sure that you don't		// read too much or too less		QByteArray ba( packetSize );		readBlock( ba.data(), packetSize );		bytesAvail -= packetSize;		packetSize = 0;		QVariant variant;		QDataStream ds( ba, IO_ReadOnly );		ds >> variant;		switch ( variant.type() ) {		    case QVariant::String:			emit receivedText( variant.toString() );			break;		    case QVariant::Image:			emit receivedPixmap( QPixmap(variant.toImage()) );			break;		    case QVariant::Palette:			QApplication::setPalette( variant.toPalette(), TRUE );			break;		    default:			break;		}	    }	}    }private:    Q_UINT32 packetSize;};IpcServer::IpcServer( Q_UINT16 port, QObject *parent ) :    QServerSocket( 0x7f000001, port, 1, parent ){}void IpcServer::newConnection( int socket ){    IpcSocket *s = new IpcSocket( this );    s->setSocket( socket );    connect( s, SIGNAL(receivedText(const QString&)),	    SIGNAL(receivedText(const QString&)) );    connect( s, SIGNAL(receivedPixmap(const QPixmap&)),	    SIGNAL(receivedPixmap(const QPixmap&)) );}#include "ipcserver.moc"

⌨️ 快捷键说明

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