关于UDP协议发送数据报和接受数据报的问题的讨论,欢迎大家发言!

wsmall1 2004-11-19 10:09:44
一台主机向局域网广播信息,如果是基于UDP协议的,那么可以肯定消息是通过数据报的形式来发送的。我遇到的问题是,可不可以一次发送几个甚至几十个数据报呢?我接收的时候该如何来接受发送过来的一次这么多的数据报呢?
...全文
299 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
kerlw 2004-11-19
  • 打赏
  • 举报
回复
可以是可以,不过是有些问题的
接收其实是从一个缓冲区来读取这些收到的数据报,而它是不会分辨里面存在几个数据报的,这个你看看recv , recvfrom函数就知道,只能指定大小。你要它读多少出来,它就会读多少出来。一般情况下,我们都是用一收一读,就是一次性把里面的东西读出来,所以我们设定的大小一般都是超过数据报可能的大小的。
另外一个问题就是socket的这个缓冲区也是有大小的,当接收到的数据报超过了这个缓冲区的容量了,数据就丢失了(UDP)。
通过广播地址(192。168。0。255这样的)来实现广播其实用的并不多。有时候都是通过伦循一个地址表来实现广播,这样实现的时候其实还是点到点,udp又是不可靠的方式,用点到点就可以加入一些响应判断及重发之类的加强可靠性,当然有些数据报无所谓可靠不可靠的就不用理会了。比如作为一个服务端向客户端发送一些更新数据,而且是每一段时间发送一次最新数据,而客户端接受到新数据就更新显示,没有接收到就显示已有数据,这些数据又不重要,那么服务端就只管发送就是了,不必理会是否对方接收到了,即使这个回合没有接收到,下个回合它也可能会接收到的。但是有时候数据的重要性比较高,可能我这边不能漏掉一组数据,这种情况下,就必须要考虑可靠性,服务端就希望在发送出去之后收到客户端的回应以表示客户端接收到了数据。

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧