使用UDP协议,sendto可将数据一次性发送给多个接收者吗 ?

wmrwinhap 2002-08-22 10:45:33
sendto的函数原型如下:

int sendto( SOCKET s, const char FAR * buf, int len, int flags, const struct sockaddr FAR * to, int tolen );

我将 to 指向一个sockaddr的三元数组,数组的每个元素指向一个地址,tolen赋值为sizeof(sockaddr)*3,调用成功(返回发送的字节数),但却只有第一个地址接收到数据。

请问怎样才能一次性将数据发送到多个地址?
...全文
308 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wmrwinhap 2002-08-23
  • 打赏
  • 举报
回复
如果不用全网广播,并且接收方本身不做特别处理(我指的是接收方不做处理,发送方做一些再复杂的处理也没关系),发送方倒底有没办法一次性将数据发送到网络内多个接收者呢?
HansXu 2002-08-22
  • 打赏
  • 举报
回复
哈哈!I 服了 u!sendto居然能被你如此创造行的使用。
还是用广播(Broadcasting)(x.x.x.255)或是多播(Multicasting)(224.0.0.0 - 239.255.255.255)吧。
wmrwinhap 2002-08-22
  • 打赏
  • 举报
回复

广播会使子网内所有节点都接收,不是我想要的。

组播要先加入组,而且好象要接收方必须自已主动加入组,应用就受很多限制。除非发送方能自动将接收方加入组(但好象这样会失败)。

能否多个接收方不作特殊处理(如主动加入多播组)就能象接收单播或广播数据一样接收这些数据,而发送方共只需发送一次呢?

对于组播,至于是子网内还是子网外,倒没什么限制,只要组播地址选取大于224.0.0.255且小于等于239.255.255.255并将TTL值设置为N(大于1)就可以在N个子网内传播(穿越N-1个路由器)的。

taoni 2002-08-22
  • 打赏
  • 举报
回复
好像在socket初始化的时候的第一各参数可以指定。
genjurolyb 2002-08-22
  • 打赏
  • 举报
回复
居于网内还是可以的,sockaddr为组播地址。

224.0.0.x吧,好象。
dingkl 2002-08-22
  • 打赏
  • 举报
回复
不可能一次发送给多个地址
NowCan 2002-08-22
  • 打赏
  • 举报
回复
哈哈,厉害!
不过倒是真的应该建议M$把这个函数改成这种方式。哈哈。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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