当前位置: 首页 > news >正文

基于C++实现的简单的网络应用程序

♻️ 资源

大小:701KB

➡️资源下载:https://download.csdn.net/download/s1t16/87425398

一、实验目的:

1、了解TCP与UDP协议,以及它们之间的区别。

2、了解客户/服务器模型原理。

3、熟悉Socket编程原理,掌握简单的套接字编程。

二、实验原理:

1、编写用TCP协议实现的Client端和Server端程序并调试通过。

程序流程如图

2、编写用UDP协议实现的Client端和Server端程序并调试通过。

实验过程:

本作业使用C++MFC完成,使用CAsyncSocket实现TCP和UDP模型。

2.1.TCP模型

实现服务器需要两个派生自CAsyncSocket类的子类,一个用于Accept,一个用于Process。具体实现如下:

CListenSocket继承CAsyncSocket,重载OnAccpet,在OnAccept中Accept(processSocket),然后在CprocessSocket中处理。

CProcessSocket继承CAsyncSocket,重载OnSend OnReceive OnClose,通过AsyncSelect来切换读写的操作,在OnClose中delete本身(因为在accept中是new来的,不然会内存泄露)。

实现客户端只需要一个继承自CAsyncSocket的类,假设叫CConnectSocket,需要重载OnConnect OnSend OnReceive OnClose. OnConnect主要是为了收到接通时的事件,处理errorcode,其他跟服务器类似。

使用时,服务器用Create 并listen,客户端Create 然后Connect进入使用循环。

首先打开客户端和服务器界面,点击服务器监听,客户端连接(直接点击连接即可,默认IP为本机,端口号1088)后建立连接,发送请求,服务器返回请求,客户端接收,关闭连接,下次发送请求需要重新连接。点击关闭可以中断连接。客户端服务器均有日志记载。演示如图:

2.2.UDP模型

UDP模型比TCP要简单,不分服务器端跟客户端。也可以称为是对等的,都使用相同的派生于CAsyncSocket的类,这里假设为CupdSocket,重载OnReceive,

|

使用时,直接创建Create,然后用SendTo发送数据,接受数据都在OnReceive中,不需要AsyncSelect来切换。

同样打开客户和端服务器界面,自动建立连接(默认IP地址为本机,服务器端口号2000,客户端端口号!!!!)客户端发送请求,服务器响应,客户端接收。服务器记录日志。演示如图:

至此,实验完成。

http://www.jsqmd.com/news/656027/

相关文章:

  • 2026年云南昆明中高考美术艺考机构 - 云南美术头条
  • 第X讲:C# 条件逻辑实战:从if else到Razor页面中的智能决策(黄菊华NET网站开发、C#网站开发、Razor网站开发教程)
  • 企业级Java SMB/CIFS客户端库:jcifs-ng如何解决跨平台文件共享的核心痛点
  • 知识图谱 03:知识表示方法
  • 官方认证|2026年湖南五大正规微电影制作团队排名,衡阳等地飞谷传媒综合实力遥遥领先 - 博客万
  • 别再混淆了!RDMA的RC、UC、UD、RD服务类型,到底该怎么选?(附场景对比表)
  • 用Python模拟复杂系统:Mesa智能体建模框架的5大核心应用场景
  • 技术深度解析:XHS-Downloader开源项目如何解决小红书内容下载难题
  • QobuzDownloaderX-MOD:一站式无损音乐下载解决方案
  • CCAA外审员是什么?管理体系审核员详解 - 众智商学院官方
  • 无需编程基础!MogFace人脸检测工具一键部署教程:上传图片即出结果,支持置信度标注
  • 2026年湖南长沙断桥铝系统门窗、阳光房定制与隔音防水门窗源头厂家直联指南(含官方联系方式) - 精选优质企业推荐官
  • 别再只测理论值了!手把手教你用ZCU104实测AXI DMA真实带宽(附Vivado工程与源码)
  • DAB三套三重移相算法的优缺点记录
  • 在apache-maven项目中使用log4写日志
  • 别再只盯着自动跟随了!聊聊智能行李箱那些被低估的‘小功能’:指纹锁、称重和快充怎么选?
  • 揭秘GitHub Copilot在Scrum中的真实落地路径:从Sprint Planning到Daily Standup的5个关键嵌入点
  • 2026年GEO推广怎么选择,聊聊值得推荐的靠谱公司 - 工业品牌热点
  • 2026年可湿水的一屋纸抽纸定制厂,柔软亲肤的一屋纸抽纸厂家,加厚耐用的一屋纸抽纸定制厂 - 品牌策略师
  • 为什么你的苹果触控板在Windows上不够流畅?mac-precision-touchpad驱动给你原生级体验
  • Ubuntu系统MPI并行计算环境搭建实战
  • 5分钟快速激活Windows和Office:智能激活工具完全指南
  • LaTeX排版中文论文时,你踩过这几个坑吗?关于字体、行距和页边距的避坑指南
  • 盘点2026年口碑好的大型固结仪供应商,专业制造商值得关注 - 工业推荐榜
  • 施密特触发电路实战:如何用CMOS门电路搭建一个脉冲整形器(附回差电压计算)
  • 别再为钙成像数据发愁了!手把手教你用MATLAB的Calcium Imaging Analysis包搞定预处理与胞体识别
  • PowerDMIS插入提示
  • 如何用STM32+ESP8266+2.13寸墨水屏打造超低功耗桌面时钟(附完整代码)
  • 运维实战:K8s节点维护,用cordon、drain还是delete?一张图帮你做决策
  • 全志T113-S3嵌入式Linux日志分析实战:从syslog到syslog-ng的完整配置指南