栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

ACE 封装TCP服务端

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ACE 封装TCP服务端

ACE TCP Server
最近有项目使用TCP进行数据发送,但使用Qt内部的TCP总是出现socket被释放与抛出winapi异常的问题,所以改用了ACE并对其进行了一个简单的封装(肯定是没有Qt好用)

.h文件

#pragma once
#ifdef _DEBUG   
#pragma  comment (lib,"ACEd.lib")   
#else   
#pragma  comment (lib,"ACE.lib")   
#endif 
#include "ace/SOCK_Acceptor.h"
#include "ace/SOCK_Stream.h"
#include "ace/INET_Addr.h"
#include "ace/OS.h"
#include
class AceTcp
{
public:
	AceTcp();
	~AceTcp();
	bool bind(std::string ipAndPort);
	bool listening();
	int write(char * message, int len);
	int read(char * buffer, int len);
	bool close();
	bool islink();
	bool isBind();
private:
	ACE_SOCK_Stream mSocketStream;//socket 数据流
	ACE_INET_Addr mAddr;
	ACE_SOCK_Acceptor  mServer;
	bool mIslink;
	bool mIsBind;
	ACE_Time_Value timeOut;
};



.cpp文件

#include "AceTcp.h"

AceTcp::AceTcp():mIsBind(false),mIslink(false)
{
	timeOut.set_msec(200);
}

AceTcp::~AceTcp()
{
	mServer.close();
	mSocketStream.close();
}

bool AceTcp::listening()
{
	if (mIsBind&&!mIslink)
	{
		int result = mServer.accept(mSocketStream, &mAddr);
		mIslink = result >= 0 ? true : false;
	}
	return mIslink;
	
}

bool AceTcp::bind(std::string ipAndPort)
{
	if (!mIsBind)
	{
		mAddr.string_to_addr(ipAndPort.data());
		int result = mServer.open(mAddr);
		mIsBind = result >= 0 ? true : false;
	}
	return mIsBind;
}

int AceTcp::write(char * message, int len)
{
	if (!mIslink)
		return -1;
	return mSocketStream.send(message, len,&timeOut);
}

int AceTcp::read(char * buffer, int len)
{
	if (!mIslink)
		return -1;
	return mSocketStream.recv(buffer,len,&timeOut);
}

bool AceTcp::close()
{
	if (mIslink)
	{
		int result = mSocketStream.close();
		mIslink = result >= 0 ? false : true;
	}
	return  !mIslink;
}

bool AceTcp::islink()
{
	return mIslink;
}

bool AceTcp::isBind()
{
	return mIsBind;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/702727.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号