UDP套接字编程

  • 实验目的

通过 UDP 套接字编程实验,掌握网络套接字的构成,掌握 UDP 的通信特点, 理解面向无连接的通信方式;实现基于 UDP 的服务器/客户端通信过程。

  • 实验平台与实验设备(或实验环境)

能够连接网络的计算机一台;高级程序设计软件如 Visual C++ 6.0 / Code Blocks / DevCPP。

  • 实验内容与实验步骤(如:任务、基本原理、软硬件设计、网络拓扑图、流程图、代码等)
  1. UDP 传输层协议的特点是什么?

UDP使用IP提供无连接的不可靠但效率高的传输服务。UDP比TCP 简单得多。UDP适用于一次传输少量信息的情况。它的可靠性由上层的应 用程序提供。UDP的价值在于其效率高,当底层通信子网相当可靠时,就更 为适宜。

  1. 什么是套接字?标识一个 UDP 套接字的二元组是?

源 IP 地址与端口号的组合或目的 IP 地址与端口号的组合套接字是一种软件抽象,用于表示两台机器之间的连接终端,套接字(Socket)大致位于OSI模型的会话层、TCP/IP模型的应用层,每一台机器都有一个套接字,可以想象成套接字是机器的端口,他们之间都有一条虚拟的电缆,电缆的每一段都插入到套接字中,也就是说一台机器上的套接字可以和另一台机器上的套接字组成一条通信通道,我们可以用这个通道在两台机器之间发送数据。UDP的套接字是由二元组标识的,即IP地址与端口号。当两个套接字具有相同的目的IP与目的端口号,那么他们将被定向到同一个socket。源端口号和源IP的作用是用来区分返回地址。而TCP的套接字是由四元组标识的

  1. 基于 UDP 的服务器/客户端通信,服务器与客户端的程序流程应该是怎 么样的?请画出其流程图。

服务器端:
创建socket对象
使用bind()绑定主机号host和端口号port
使用listen()监听
使用accept()被动连接
使用send()/rece() 发送/接收数据

客户端:
创建socket对象
使用connect连接到服务器端
使用send()/recv() 发送/接收数据
关闭socket对象

服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后从accept()返回。

  1. 实现UDP客户服务器之间的简单通信

服务器

客户端

  • 实验数据和结果分析与实验思考题的回答(最好有实验截图)

通过编写 UDP 套接字程序,采用 C 程序设计语言,实现 UDP 的服务器/客户端相互之间数据的传送与接收。

(1)、编写程序时,在创建套接字 socket 时,采用socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)

函数,函数的三个参数分别表示:Socket 的地址域,分为 unix(AF_UNIX,表示 unix 系统的两个进程可以通信)和 Internet(AF_INET,表示 Internet 上的任意两台主机可以通信);Socket 的类型,UDP 是数据报形式,DGRAM,而 TCP

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

是阿宇呢

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

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

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

打赏作者

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

抵扣说明:

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

余额充值