📄 httpd.cpp.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 + -