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

📄 explorer.h

📁 简单的socket请求
💻 H
字号:
// Explorer.h: interface for the CExplorer class.
//
//////////////////////////////////////////////////////////////////////
#include "Http.hrh"
#include <e32base.h>
#include <es_sock.h>
#include <in_sock.h>
#include "Recver.h"
#include "Sender.h"
#include <flogger.h>
class MDisplayData;
#if !defined(AFX_EXPLORER_H__B2BB3E7E_ACFC_4168_A30D_F3BAE40C8890__INCLUDED_)
#define AFX_EXPLORER_H__B2BB3E7E_ACFC_4168_A30D_F3BAE40C8890__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/*!
   class MReponseRecv
   处理数据显示的接口
  */

_LIT(KDefaultServerName,"218.206.68.86");
_LIT(KDefaultUrl, "/gglook/testLVS.20M.html");
// _LIT(KDefaultServerName1,"61.145.124.55");
// _LIT(KDefaultUrl1, "http://61.145.124.55:8088/gglook/testLVS.20M.html");
_LIT(KDefaultServerName1,"mp3.muzhient.cn");
_LIT(KDefaultUrl1, "http://mp3.muzhient.cn/testmusic/mp3/071781207e.mp3");
_LIT(KDefaultServerName1_,"mp3.zmask.cn");
_LIT(KDefaultUrl1_, "http://mp3.zmask.cn/testmusic/mp3/071781207e.mp3");
_LIT(KDefaultServerName2,"218.206.68.86");
_LIT(KDefaultUrl2, "/testLVS.20M.html");

class MReponseRecv
{
public:
	virtual void SetStartWrite() =0;
	virtual void KeyEventL(TInt aCode) =0;
	virtual void WriteToFile(TDesC8& aData) =0;
	virtual void SetEditText(TDesC8 aData) =0;
	virtual void DisplayText(TDesC8& aData) =0;
	virtual void WriteLog(const TDesC16& aData) =0;
	virtual void WriteLogInt(const TDesC16& aData, TInt aCount) =0;
	virtual void SetUrl(TDesC8& aData) = 0;
	virtual void SetHttpHeader() =0;
	virtual void WriteL() =0;
	virtual void ReadL() =0;
	virtual void RecvBegin() = 0;
	virtual void RecvContinue(TInt aDownLen, TInt aTotalLen) = 0;
	virtual void RecvFinish() = 0;
	virtual void ChangeState() = 0;
	virtual void NotifyState(TInt aTotalLen, TInt aDownLen) = 0;
};

class CExplorer : public CActive,public MReponseRecv 
{
public:
	CExplorer(MDisplayData& aMDisplayData);
	virtual ~CExplorer();
	static CExplorer* NewLC(MDisplayData& aMDisplayData);
	static CExplorer* NewL(MDisplayData& aMDisplayData);
	void ConstructL();
	void DoCancel();
	//连接状态
	enum TSocketsEngineState 
	    {
		ENotConnected,
        EConnecting,
        EConnected,
		ELookingUp
	    };
	
	/*
	* 函数名称: ConnectL
	* 功能描述: 开始连接
	*/
	void ConnectL();
	/*
	* 函数名称: DisconnectL
	* 功能描述: 断开连接
	*/
	void DisconnectL();
	/*
	* 函数名称: SetServerName
	* 功能描述: 设置服务器名
	* 输入参数: aName 服务器名
	*/
	void SetServerName(TDesC aName);
	/*
	* 函数名称: SetPort
	* 功能描述: 设置端口
	* 输入参数: aPort 端口
	*/
	void SetPort(TInt aPort);
	/*
	* 函数名称: ReadL
	* 功能描述: 开始读数据
	*/
	void ReadL();
	/*
	* 函数名称: WriteL
	* 功能描述: 写数据
	* 输入参数: aData 数据
	*/
	void WriteL();
	/*
	* 函数名称: TimerExpired
	* 功能描述: 连接超时
	*/
	void TimerExpired();
	/*
	* 函数名称: ConnectL
	* 功能描述: 开始连接
	* 输入参数: aAddr 连接地址
	*/
	void ConnectL(TUint32 aAddr);
	/*
	* 函数名称: ChangeStatus
	* 功能描述: 修改当前连接状态
	* 输入参数: aNewStatus 连接状态
	*/
	void ChangeStatus(TSocketsEngineState aNewStatus);
	/*
	* 函数名称: SetRequestMethod
	* 功能描述: 设置请求方式
	* 输入参数: aMethod 请求方式
	*/
	void SetRequestMethod(TInt aMethod);
	/*
	* 函数名称: Isconnected
	* 功能描述: 是否已连接
	* 返回: 是否已连接
	*/
	TBool Isconnected();
	/*
	* 函数名称: SetStartWrite
	* 功能描述: 设置iStartWrite
	*/
	void SetStartWrite();
	void KeyEventL(TInt aCode);
	/*
	* 函数名称: WriteToFile
	* 功能描述: 持久化接收到的数据
	* 输入参数: aData 数据
	*/
	void WriteToFile(TDesC8& aData);
	/*
	* 函数名称: SetEditText
	* 功能描述: 设置iRichEditor文本
	* 输入参数: aData 文本
	*/
	void SetEditText(TDesC8 aData);
	/*
	* 函数名称: DisplayText
	* 功能描述: 在iRichEditor显示文本
	* 输入参数: aData 文本
	*/
	void DisplayText(TDesC8& aData);
	void SetIAP(TUint32 aIAP);
	void WriteLog(const TDesC16& aData);
	void WriteLogInt(const TDesC16& aData, TInt aCount);
	void SetUrl(TDesC8& aData);
	void RecvBegin();
	void RecvContinue(TInt aDownLen, TInt aTotalLen);
	void RecvFinish();
	void ChangeState();
	void NotifyState(TInt aTotalLen, TInt aDownLen);
	void StartL();
private:
	void RunL();		
	/*
	* 函数名称: SetHttpHeader
	* 功能描述: 设置http头
	*/
	void SetHttpHeader();


private:
	//连接状态
	TSocketsEngineState         iEngineStatus;
public:
	//服务器名
	TBuf<MAX_SERVER_NAME_LENGTH> iServerName;
	//端口
	TInt                        iPort;
	//socket server
	RSocketServ                 iSocketServ;
	//网络地址
	TInetAddr                   iAddr;
	RHostResolver               iResolver;
	TNameEntry                  iNameEntry;
	TNameRecord                 iNameRecord;
	TBuf8<2048>                   iConBuf;
	TBuf<2048>                   iHttpHeader;
	TBuf8<2048>                   iBuffer;

    TSockXfrLength              iDummyLength;
	//接收
	CRecver*					iRecver;
    //发送
	CSender*					iSender;
	//请求类型
	TInt						iRequestType;
	RConnection					iConnection;
	//连接socket
	RSocket          iSocket;
	//数据处理接口
	MDisplayData& iMDisplayData;	
	RFileLogger iLog;
	TUint32 iIAPSelect;
	TBuf<512>              iUrl;
	TInt                        iConnectType;
	TBool iNeedHost;
	TTime                           iStartTime;
	TTime                           iRecvTime;
	TInt                            iInterval1;
	TInt                            iInterval2;
	TInt                            iStartPos;
	TInt                            iEndPos;
};

#endif // !defined(AFX_EXPLORER_H__B2BB3E7E_ACFC_4168_A30D_F3BAE40C8890__INCLUDED_)

⌨️ 快捷键说明

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