CAsyncSocket 简单试用

两年前,用过这个MFC网络异步通信类,稀里糊涂的。经过两年的积累,终于对程序结构方面有所了解,方才理解这些类的使用方法。

当然网络通信原理得了解一些,线程进程也得了解一些,加上MSDN的解释就可以了。


首先,建立MFC对话框,记得选中,windows socket,这样在应用程序初始化时,会执行socket初始化AfxSocketInit()。

接着新建类CMySocket:public CAsyncSocket,重写OnAccept(), OnReceive(), OnClose() 三个事件。

MySocket.h文件


class CMySocket : public CAsyncSocket
{
public:
	CMySocket();
	virtual ~CMySocket();

	void OnAccept(int nErrorCode);
	void OnReceive(int nErrorCode);
	void OnClose(int nErrorCode);
};

MySocket.cpp文件,构造函数与析构函数没有做什么事情

// CMySocket member functions
void CMySocket::OnAccept(int nErrorCode)
{
	CMySocket *pMySocket = new CMySocket();
	// 将接受的客户端套接字,储存到新建的CMySocket类中
	this->Accept((CAsyncSocket &)*pMySocket);
	// 新的套接字注册接收与关闭事件
	pMySocket->AsyncSelect(FD_READ | FD_CLOSE);
}
void CMySocket::OnReceive(int nErrorCode)
{
	const int bufferSize = 1024;
	char buff[bufferSize];
	memset(buff, 0, sizeof(buff));
	this->Receive(buff, bufferSize);
}

void CMySocket::OnClose(int nErrorCode)
{
	this->Close();
	delete(this);
}
在对话框类中,声明CMySocket m_sock;

在对话框的初始化函数中,执行

m_sock.Create(1234, SOCK_STREAM, FD_ACCEPT);  // 绑定端口1234,流协议(TCP),注册Accept事件m_sock.Listen(); // 监听至此CAsyncSocket 可以正常运转,完成简单的被动接收,再发送功能

 
 
 

 
 
 

                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值