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

📄 evanetwork.cpp

📁 linux下的eva源代码
💻 CPP
字号:
/*************************************************************************** *   Copyright (C) 2004 by yunfan                                          * *   yunfan_zg@163.com                                                     * *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * *   This program 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 General Public License for more details.                          * *                                                                         * *   You should have received a copy of the GNU General Public License     * *   along with this program; if not, write to the                         * *   Free Software Foundation, Inc.,                                       * *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * ***************************************************************************/ #include "evanetwork.h"#include "evasocket.h"EvaNetwork::EvaNetwork(const QHostAddress &host, const short port, const Type type) 	:socket(NULL){	this->type = type;	switch(type){	case UDP:		socket = new EvaSocket(host, port);  // default is UDP		QObject::connect(socket, SIGNAL(isReady()), this, SIGNAL(isReady()));		QObject::connect(socket, SIGNAL(writeReady()), SIGNAL(writeReady()));		QObject::connect(socket, SIGNAL(receivedData(int)), this, SIGNAL(dataComming(int)));		QObject::connect(socket, SIGNAL(exceptionEvent(int)), this, SLOT(processProxyEvent(int)));		break;	case TCP:		socket = new EvaSocket(host, port, EvaSocket::TCP);		QObject::connect(socket, SIGNAL(isReady()), this, SIGNAL(isReady()));		QObject::connect(socket, SIGNAL(writeReady()), SIGNAL(writeReady()));		QObject::connect(socket, SIGNAL(receivedData(int)), this, SIGNAL(dataComming(int)));		QObject::connect(socket, SIGNAL(exceptionEvent(int)), this, SLOT(processProxyEvent(int)));		break;	case HTTP_Proxy:		socket = new EvaHttpProxy(host, port);		QObject::connect(socket, SIGNAL(proxyWriteReady()), SIGNAL(writeReady()));		QObject::connect(socket, SIGNAL(proxyEvent(int)), this, SLOT(processProxyEvent(int)));		QObject::connect(socket, SIGNAL(dataArrived(int)), this, SIGNAL(dataComming(int)));		QObject::connect(socket, SIGNAL(socketException(int)), this, SIGNAL(exceptionEvent(int)));		break;	default:		socket = new EvaSocket(host, port);  // default is UDP		break;	}}EvaNetwork::~EvaNetwork(){	if(socket) delete socket;} void EvaNetwork::setServer(const QHostAddress &address, const short port){	socket->setHost(address, port);	}const QHostAddress &EvaNetwork::getHostAddress() const{	return socket->getHostAddress();}const short EvaNetwork::getHostPort() const{	return socket->getHostPort();}void EvaNetwork::setDestinationServer(const QString &server, const short port) // for Http Proxy only;{	if(type != HTTP_Proxy) return;		((EvaHttpProxy*)(socket))->setDestinationServer(server, port);}void EvaNetwork::setAuthParameter(const QString &username, const QString &password){ 	 ((EvaHttpProxy*)(socket))->setAuthParameter(username, password);}void EvaNetwork::setAuthParameter(const QCString &param){	((EvaHttpProxy*)(socket))->setBase64AuthParam(param);}void EvaNetwork::newURLRequest(){	((EvaHttpProxy*)(socket))->tcpReady();}void EvaNetwork::connect(){	socket->startConnecting();}bool EvaNetwork::read(char *buf, int len){	return socket->read(buf, len);}bool EvaNetwork::write(const char *buf, const int len){	return socket->write(buf, len);}void EvaNetwork::setWriteNotifierEnabled(bool enabled){	socket->setWriteNotifierEnabled(enabled);}void EvaNetwork::processProxyEvent(int num){	if(type != HTTP_Proxy){		switch(num){		case EvaSocket::Init:		case EvaSocket::Connecting:		case EvaSocket::Ready:		case EvaSocket::Failed:		case EvaSocket::None:		case EvaSocket::BytesReadWrong:			emit exceptionEvent(num);			break;		}        }else{        	switch(num){		case EvaHttpProxy::Proxy_None:		case EvaHttpProxy::Proxy_TCP_Ready:		case EvaHttpProxy::Proxy_Connecting:			break;		case EvaHttpProxy::Proxy_Ready:			emit isReady();			break;		case EvaHttpProxy::Proxy_Need_Auth:			emit exceptionEvent(Proxy_Need_Auth);			break;		case EvaHttpProxy::Proxy_Read_Error:			emit exceptionEvent(Proxy_Read_Error);			break;		case EvaHttpProxy::Proxy_Error:			emit exceptionEvent(Proxy_Error);			break;		}        }}void EvaNetwork::close( ){	socket->closeConnection();}const QHostAddress EvaNetwork::getSocketIp( ){	if(socket) return socket->getSocketAddress();	return QHostAddress();}const unsigned int EvaNetwork::getSocketPort( ){	if(socket) return socket->getSocketPort();	return 0;}

⌨️ 快捷键说明

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