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

📄 socketengine.cpp

📁 基于symbian和C#程序进行socket通信的代码
💻 CPP
字号:
/*
 ============================================================================
 Name		: SocketEngine.cpp
 Author	  : 
 Version	 : 1.0
 Copyright   : Your copyright notice
 Description : CSocketEngine implementation
 ============================================================================
 */

#include <in_sock.h>
#include "SocketEngine.h"

CSocketEngine::CSocketEngine()
	{
	// No implementation required
	}

CSocketEngine::~CSocketEngine()
	{
	if (iSocket.SubSessionHandle() != 0)
		{
		iSocket.CancelAll();
		iSocket.Close();
		}
	
	if (iSocketServ.Handle() != 0)
		{
		iSocketServ.Close();
		}
	
	delete iRecvData;
	iRecvData = NULL;
	}

CSocketEngine* CSocketEngine::NewLC()
	{
	CSocketEngine* self = new (ELeave)CSocketEngine();
	CleanupStack::PushL(self);
	self->ConstructL();
	return self;
	}

CSocketEngine* CSocketEngine::NewL()
	{
	CSocketEngine* self=CSocketEngine::NewLC();
	CleanupStack::Pop(); // self;
	return self;
	}

void CSocketEngine::ConstructL()
	{

	}

/**
 * 初始化方法
 */
void CSocketEngine::InitL()
	{
	TInt err = iSocketServ.Connect();
	if (err != KErrNone && err != KErrAlreadyExists)
		{
		User::Leave(err);
		}
	
	err = iSocket.Open(iSocketServ, KAfInet, KSockStream, KProtocolInetTcp);
	if (err != KErrNone && err != KErrAlreadyExists)
		{
		User::Leave(err);
		}
	}

void CSocketEngine::ConnectL()
	{
	TInetAddr addr;
	
	// 设置远程服务器段IP
	_LIT(KAddr, "127.0.0.1");
	addr.Input(KAddr);
	
	// 设置端口
	addr.SetPort(8532);
	
	// 请求连接
	TRequestStatus status(KRequestPending);
	iSocket.Connect(addr, status);
	
	User::WaitForRequest(status);
	User::LeaveIfError(status.Int());
	}

void CSocketEngine::SendInfoL()
	{
	TBuf8<8> buf(_L8("12345678"));
	TRequestStatus status(KRequestPending);
	iSocket.Send(buf, 0, status);
	
	User::WaitForRequest(status);
	User::LeaveIfError(status.Int());
	
	// 等待服务器端返回数据
	RecvInfoL();
	}

void CSocketEngine::RecvInfoL()
	{
	TBuf8<8> buf;
	TRequestStatus status(KRequestPending);
	iSocket.Recv(buf, 0, status);
	
	User::WaitForRequest(status);
	User::LeaveIfError(status.Int());
	
	delete iRecvData;
	iRecvData = NULL;
	
	iRecvData = buf.Alloc();
	}

⌨️ 快捷键说明

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