【MFC】学习MFC day5 vs2019 基于对话框的MFC应用&使用CAsyncSocket类开发的TCP套接字应用程序

本文档介绍了如何使用MFC和CAsyncSocket类在VS2019下创建一个基于对话框的应用程序,包括服务端和客户端。详细阐述了服务端的CMFCDialogDlg类和TcpServer类的创建及事件处理,客户端的CClienttcpDlg类和TcpClient类的实现,以及交互过程。同时提供了相关代码示例和GitHub项目链接。
摘要由CSDN通过智能技术生成

【MFC】学习MFC day5 vs2019 基于对话框的MFC应用&使用CAsyncSocket类开发的TCP套接字应用程序

上一篇

今天的目标:

1、制作一个服务端和客户端应用程序
2、实现从客户端发送信息到服务端,并在服务端列表框(List Control)控件上显示

开始:

今天的代码文件Github的链接我也会放在博客的底部哟
日常偷个懒,使用上一篇博客的项目作为服务端,并进行一些修改。
再新建一个基于对话框的MFC项目作为客户端
以下表格是服务端和客户端交互的步骤

服务端 客户端
AfxSocketIint() AfxSocketIint()
CSocket sockSrvr; CSocket sockClient;
sockSrvr.Create(nPort);1,2 sockClient.Create( );2
sockSrvr.Listen( );
sockClient.Connect(strAddr, nPort);3,4
CSocket sockRecv;sockSrvr.Accept( sockRecv ); 5

服务端界面(类名 CMFCDialogDlg):

在这里插入图片描述

1、新建一个TcpSever类,并继承于CAsyncSocket类

CAsyncSocket类构造函数:
CAsyncSocket 构造CAsyncSocket对象
Create 创建套接字

CAsyncSocket类成员函数:
Attach 对CAsyncSocket对象附加套接字句柄
Detach 从CAsyncSocket对象除去套接字句柄
FromHandle 返回CAsyncSocket对象的指针,给出套接字句柄
GetLastError 获得上一次运行失败的状态
GetPeerName 获得与套接字连接的对等套接字的地址
GetSockName 获得套接字的本地名
GetSockOpt 获得套接字选项
SetSockOpt 设置套接字选项
Accept 接受套接字上的连接
AsyncSelect 请求对于套接字的事件通知
Bind 与套接字有关的本地地址
Close 关闭套接字
Connect 对对等套接字建立连接
IOCtl 控制套接字模式
Listen 建立套接字,侦听即将到来的连接请求
Receive 从套接字接收数据
ReceiveFrom 恢复数据报并且存储资源地址
Send 给连接套接字发送数据
SendTo 给特定目的地发送数据
ShutDown 使套接字上的Send和/或Receive调用无效

CAsyncSocket类覆盖通知函数 :
OnAccept 通知侦听套接字,它可以通过调用Accept,接受挂起连接请求
OnClose 通知套接字,关闭对它的套接字连接
OnConnect 通知连接套接字,连接尝试已经完成,无论成功或失败
OnOutOfBandData 通知接收套接字,在套接字上有带外数据读入,通常是忙消息
OnReceive 通知侦听套接字,通过调用Receive恢复数据
OnSend 通知套接字,通过调用Send,它可以发送数据

2、在TcpSever类中引用 afxsock.h 头文件

TcpSever.h的代码:
其中typedef struct MyMsg 为客户端传到服务端的消息的结构。

#pragma once
#include<afxsock.h>
#include "pch.h"
#include "resource.h"
typedef struct MyMsg
{
   
	char name[20]="";
	char position[10]="";
	char Style[128]="";
};
class TcpSever:public CAsyncSocket
{
   
public:
	CListCtrl *mList1=new CListCtrl();
	void UpdataListCtrl(MyMsg* Msg);
	void setListCtrl(CListCtrl* mList);
	TcpSever();
	virtual void OnAccept(int nErrorCode);
	virtual void OnReceive(int nErrorCode);
	//
};

TcpSever.cpp的代码:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值