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

📄 httpd.cpp.bak

📁 qt代码的网络编程
💻 BAK
字号:
/****************************************************************************** $Id: qt/examples/httpd/httpd.cpp   2.3.8   edited 2004-08-05 $**** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.**** This file is part of an example program for Qt.  This example** program may be used, distributed and modified without limitation.*******************************************************************************/#include <qserversocket.h>#include <qapplication.h>#include <qmainwindow.h>#include <qtextstream.h>#include <qvbox.h>#include <qlabel.h>#include <qtextview.h>#include <qpushbutton.h>#include <stdlib.h>#include <qsocket.h> #include <qregexp.h> #include <qfile.h> #include <qdatastream.h> #include <stdlib.h>class HttpDaemon : public QServerSocket{    Q_OBJECTpublic:    HttpDaemon( QObject* parent=0 ) :	QServerSocket(5014,1,parent)    {	if ( !ok() ) {	    qWarning("Failed to bind to port 5014");	    exit(1);	}    }    void newConnection( int socket )    {	QSocket* s = new QSocket(this);	connect(s,SIGNAL(readyRead()),this,SLOT(readClient()));	//connect(s,SIGNAL(delayedCloseFinished()),this,SLOT(discardClient()));	s->setSocket(socket);	emit newConnect();    }signals:    void newConnect();    void endConnect();    void wroteToClient();private slots:    void readClient()    {	QSocket* socket = (QSocket*)sender();	if (socket->canReadLine()) {	    QStringList tokens = QStringList::split(QRegExp("[ \n\r][ \n\r]*"),socket->readLine());	//    if ( tokens[0] == "GET" ) {	    	    printf(" ###------1 \n");    FILE *fbmp;   	 if (( fbmp = fopen("README", "r")) == NULL) 	 	{		  printf("Open bmpFILE error !\n");          printf("%d\n", errno);      printf("%s\n", strerror(errno)); 	  		  return;		  //exit(-1);	  }	char tmp[10000];	char *p = (char *)malloc(10000);	 p =tmp;  fseek(fbmp,0,SEEK_SET);  fread(tmp,1000  ,1,fbmp);     fclose(fbmp);             //    s >> tmp;    printf(" ###------3 \n");           printf(" ### %s \n",tmp);        QTextStream os(socket);    os << tmp;//    QDataStream s( &f );    // 从文件f中读取串行化的数据//    QString str;//    Q_INT32 a;//    s >> str >> a;               	    	//		QTextStream os(socket);//		os << "<h1> Welcome Ran Yan </h1>\n";		socket->close();		emit wroteToClient();//	    }	}    }    void discardClient()    {	QSocket* socket = (QSocket*)sender();	delete socket;	emit endConnect();    }};class HttpInfo : public QVBox{    Q_OBJECTpublic:    HttpInfo()    {	HttpDaemon *httpd = new HttpDaemon( this );	QString itext = QString(		"This is a small httpd example.\n"		"You can connect with your\n"		"web browser to port %1"	    ).arg( httpd->port() );	QLabel *lb = new QLabel( itext, this );	lb->setAlignment( AlignHCenter );	infoText = new QTextView( this );	QPushButton *quit = new QPushButton( "quit" , this );	connect( httpd, SIGNAL(newConnect()), SLOT(newConnect()) );	connect( httpd, SIGNAL(endConnect()), SLOT(endConnect()) );	connect( httpd, SIGNAL(wroteToClient()), SLOT(wroteToClient()) );	connect( quit, SIGNAL(pressed()), qApp, SLOT(quit()) );    }    ~HttpInfo()    {    }private slots:    void newConnect()    {	infoText->append( "New connection" );    }    void endConnect()    {	infoText->append( "Connection closed" );    }    void wroteToClient()    {	infoText->append( "Wrote to client" );    }private:    QTextView *infoText;};int main( int argc, char** argv ){    QApplication app( argc, argv );    HttpInfo info;    app.setMainWidget( &info );    info.setCaption("Qt Example - httpd");    info.show();    return app.exec();}#include "httpd.moc"

⌨️ 快捷键说明

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