【C/C++套接字编程】UDP通信实验

目录

一、实验目的:

二、实验内容简要描述

三、实验步骤与结果分析

四、结论


 系列博客

【C/C++套接字编程】套接字的基本概念与基础语法_Mr_Fmnwon的博客-CSDN博客

【C/C++套接字编程】TCP协议通信的简单实现_Mr_Fmnwon的博客-CSDN博客

【C/C++套接字编程】UDP协议通信的简单实现_Mr_Fmnwon的博客-CSDN博客

【C/C++套接字编程】TCP通信实验_Mr_Fmnwon的博客-CSDN博客


一、实验目的:

通过本实验使学员了解和掌握编写基于UDP协议的网络应用程序。任务是开发一个基于UDP Socket API的网络聊天程序。


二、实验内容简要描述

用所学的UDP Socket API知识来开发基于UDP协议的网络。通过编程实现服务端和客户端的信息通信。UDP协议建立交互的流程如下图所示。通过编写C/C++程序,调用windows提供的Socket API,模拟下述流程,建立客户端与服务端的远程UDP通信。使得彼此双方能够接收彼此信息、发送信息。


三、实验步骤与结果分析

基于UDP协议的面向客户/服务器的工作流程是:

  • 服务端

Ⅰ 服务器首先启动,调用 socket( )创建套接字;

Ⅱ 然后调用bind( )指定本地(服务器)socket地址(IP地址+端口号);

Ⅲ 接着就可以等着接收客户的信息,并在过程中获取客户端地址信息,开始交互

Ⅳ 交互完成,并不继续后,通过Close释放套接字

  • 客户端

Ⅰ 客户端首先启动,调用 socket( )创建套接字;

Ⅱ 然后调用bind( )指定本地(客户端)socket地址(IP地址+端口号);

Ⅲ 准备好服务器的地址(IP地址+端口号);

Ⅳ 通过sendto(),经客户端socket向目的地址发送数据,recvfrom接收数据,开始交互

Ⅴ 交互完成,并不继续后,通过Close释放套接字


服务端:

1、启动,调用 socket( )创建套接字;

2、调用bind( )指定本地(服务器)socket地址(IP地址+端口号);

3、等着接收客户的信息,并在过程中获取客户端地址信息,开始交互

4、交互完成,并不继续后,通过Close释放套接字


客户端:

1、启动,调用 socket( )创建套接字;

2、调用bind( )指定本地(客户端)socket地址(IP地址+端口号);

3、准备好服务器的地址(IP地址+端口号);

4、通过sendto(),经客户端socket向目的地址发送数据,recvfrom接收数据,开始交互

5、交互完成,并不继续后,通过Close释放套接字


基于以上连接策略实现的简易UDP通信结果如下:

服务端

客户端


四、结论

此次实验,让我更加了解了UDP协议的过程,同时也初步掌握了C++ Socket编程的基础技能,更让我在实际的应用中,尝试使用多线程、利用控制字符美化交互环境等等,受益匪浅。

对于控制打印的函数,自己通过摸索,也有了很大的收获:

           打印时间

         通过套接字获取地址

         回退到黑窗口上一行并覆写

此外,通过TCP/UDP两个实验的对比与实现,对于两者通信方式、过程中的相似与不同之处,有了更深的了解。例如,对于实现多个客户端与服务端的通信,UDP实现起来很自然而简单,相较于TCP的多线程实现,其本质上是因为两者是否面向对象的区别。然而在将TCP/UDP向应用方向拓展时,不可避免地都应该采用多线程的处理方式以带来良好的用户体验。

对于实现“聊天室”——广播与组播的功能或者仿照实现,需要进一步地理解与探索,这在我之后的探索中,是一个方向。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值