打怪升级之CSocket回调函数的调用

文章介绍了如何在MFC环境下创建一个基于CSocket的CMySocket类,并定义OnReceive函数来处理接收到的数据。在对话框类CMFCOnReceiveDlg中,添加按钮实现连接功能,并通过网络调试助手测试通信,确保数据的正确接收。
摘要由CSDN通过智能技术生成

OnReceive

这里重点介绍如何标准的组织一个OnReceive函数的调用,以避免未来出现不知名问题时不知道哪些正确:

1.建立一个最简单的CSocket新类:

class CMySocket : public CSocket
{
	public:
		virtual void OnReceive(int nErrorCode);
};

2.在MFC做最起码的定义:

// CMFCOnReceiveDlg 对话框
class CMFCOnReceiveDlg : public CDialogEx
{
// 构造
public:
	CMFCOnReceiveDlg(CWnd* pParent = nullptr);	// 标准构造函数
// 对话框数据
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_MFC_ONRECEIVE_DIALOG };
#endif
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持
// 实现
protected:
	HICON m_hIcon;
	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
	CMySocket m_socket;
	CButton CONNECT_B;
	afx_msg void OnBnClickedconnect();
};

在对话框类中添加一个自建CSocket类,并添加一个按钮用来做连接(使用类向导默认消息映射映射按钮):

void CMFCOnReceiveDlg::OnBnClickedconnect()
{
	// TODO: 在此添加控件通知处理程序代码
	AfxMessageBox(_T("begin!"));
	m_socket.Create(1234, SOCK_DGRAM, _T("192.168.1.102"));
}

点击按钮进行连接,由于CSocket的create函数本身就已经调用了bind,所以无需再bind一次。

void CMySocket::OnReceive(int nErrorCode)
{
	AfxMessageBox(_T("receive message"));
	CSocket::OnReceive(nErrorCode);
}

这样便写出了一个最简单的消息回调函数。

按照如下方式使用网络调试助手:

在这里插入图片描述

确保你再网络调试助手中的远程主机与create出来的地址、端口一致后,点击发送。

在这里插入图片描述

成功获取数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

考琪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值