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

📄 server.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
字号:
/****************************************************************************** $Id: qt/server.cpp   3.1.1   edited Feb 6 2002 $**** Copyright (C) 1992-2002 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 <qtextview.h>#include <qpushbutton.h>#include <qtextstream.h>#include <qapplication.h>#include <qmessagebox.h>#include <stdlib.h>#include "server.h"ServerInfo::ServerInfo( Q_UINT16 port, QWidget *parent, const char *name ) :    ServerInfoBase( parent, name ){    SimpleServer *server = new SimpleServer( port, this, "simple server" );    connect( server, SIGNAL(newConnect()), SLOT(newConnect()) );    connect( btnQuit, SIGNAL(clicked()), qApp, SLOT(quit()) );}void ServerInfo::newConnect(){    infoText->append( tr( "New connection\n" ) );}SimpleServer::SimpleServer( Q_UINT16 port, QObject* parent, const char *name ) :    QServerSocket( port, 1, parent, name ){    if ( !ok() ) {	QMessageBox::critical( 0, tr( "Error" ), tr( "Failed to bind to port %1" ).arg( port ) );	exit(1);    }}void SimpleServer::newConnection( int socket ){    (void)new ClientSocket( socket, &info, this, "client socket" );    emit newConnect();}ClientSocket::ClientSocket( int sock, InfoData *i, QObject *parent, const char *name ) :    QSocket( parent, name ), info( i ){    connect( this, SIGNAL(readyRead()), SLOT(readClient()) );    connect( this, SIGNAL(connectionClosed()), SLOT(connectionClosed()) );    setSocket( sock );}void ClientSocket::readClient(){    QTextStream stream( this );    QStringList answer;    while ( canReadLine() ) {	stream << processCommand( stream.readLine() );    }}QString ClientSocket::processCommand( const QString& command ){    QString answer;    QString com = command.simplifyWhiteSpace ();    if ( com.startsWith( "LIST" ) ) {	bool ok;	QStringList nodes = info->list( com.mid( 5 ), &ok );	if ( ok ) {	    for ( QStringList::Iterator it = nodes.begin(); it != nodes.end(); ++it ) 		answer += "212+" + *it + "\r\n";	    answer += "212 \r\n";	} else 	    answer += "550 Invalid path\r\n";	    } else if ( com.startsWith( "GET " ) ) {	bool ok;	QStringList data = QStringList::split( '\n', info->get( com.mid( 4 ), &ok ), TRUE );	if ( ok ) {	    for ( QStringList::Iterator it = data.begin(); it != data.end(); ++it ) 		answer += "213+" + *it + "\r\n";	    answer += "213 \r\n";	} else 	    answer += "550 Info not found\r\n";	    } else 	answer += "500 Syntax error\r\n";	    return answer;}void ClientSocket::connectionClosed(){    delete this;}

⌨️ 快捷键说明

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