广播地址设置的问题,高手来啊

joners 2002-03-23 09:52:16
我在98下用vc sdk作广播程序的时候
使用 INADDR_BROADCAST设置广播地址的时候出现错误,编译可以过去,但执行出现问题。
然后我改用 inet_addr("255.255.255.255"),
也是同样的问题,编译可以过去,执行的时候出现错误返回值是‘10013‘,请问高手们,这是怎么回事?

有一种可以执行成功的情况就是:比如:我的本机ip192.168.0.1,掩码255.255.255.0
如果我使用inet_adr("192.168.0.255"),就可以使用广播,不过这样使用太局限了啊。

请指教!!

在线等待。。。。。。
...全文
720 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
joners 2002-03-23
  • 打赏
  • 举报
回复
贴子明天结账
大家来帮小弟解决这个问题!
joners 2002-03-23
  • 打赏
  • 举报
回复
up!!!!!!!!!!!!!!!!!!!!!1
joners 2002-03-23
  • 打赏
  • 举报
回复
谢谢,楼上所有朋友们!

如果想上面那样运算的话(我想没问题)
那么现在要解决的问题就在vc下如何获得子网掩码的方法了
zwfootball 2002-03-23
  • 打赏
  • 举报
回复
up
joners 2002-03-23
  • 打赏
  • 举报
回复
哦!
过程我知道!
比如:A:IP地址192.168.0.5
B:掩码255.255.255.0
C:网络号:192.168.0.0(IP地址和掩码的逻辑于)
D:(网络掩码的逻辑非):0.0.0.255

计算过程:192.168.0.255(C和D的逻辑或)

直接运算行么?例如:0|255=255,255&168=168
e_notimpl 2002-03-23
  • 打赏
  • 举报
回复
与& 或| 非~,应该是不难的吧。
joners 2002-03-23
  • 打赏
  • 举报
回复
WINSOCK2.H,winsock.h,都有INADDR_BROADCAST定义。非得在winsock2.h里面麽?
我是在对等网络下测试的,没有涉及到域
joners 2002-03-23
  • 打赏
  • 举报
回复
255.255.255.255不是广播地址?很多code都是使用的255.255.255.255,啊,糊涂了。
to plainchow:
另外,我看INADDR_BROADCAST在.h文件里面的定义是(u_l)0xffffffff不就是255.255.255.255吗?

我感觉到自己计算广播地址是很好的方法,不过面对与,或,非,这些功能该用什麽function实现呢?

大家帮忙up一下啦,。。。。。。

来者有分
e_notimpl 2002-03-23
  • 打赏
  • 举报
回复
我用过MFC的CSocket发送广播消息,没有遇到什么问题。
另外错误号10013是:没有为本地系统配置 DNS 服务器。
e_notimpl 2002-03-23
  • 打赏
  • 举报
回复
In MSDN:
To send a broadcast (on a SOCK_DGRAM only), the address in the to parameter should be constructed using the special IP address INADDR_BROADCAST (defined in WINSOCK2.H).
plainchow 2002-03-23
  • 打赏
  • 举报
回复
255.255.255.255并不是你的广播地址,正如你上面所说的,广播地址是和你的IP地址以及网络掩码有关的,你需要另外算
joners 2002-03-23
  • 打赏
  • 举报
回复
我现在想问的问题就是:
在98下,INADDR_BROADCAST,inet_addr("255.255.255.255")设置运行怎么会有问题?而inet_addr("192.168.0.255")就可以,why?

刚才看到了一篇文章,如下:
IPv4广播地址的定义是网络号码与网络掩码逻辑“非”之间的逻辑“或”。
例如一个地址为:197.8.43.211,其子网掩码为255.255.255.240则其网络号码为两者的二进制逻辑"与",即197.8.43.208 网络掩码的逻辑"非"为0.0.0.15,与网络号码197.8.43.208二进制逻辑"或"的结果为197.8.43.223,即该子网的广播地址.



我的问题是:如果是使用函数该怎么实现呢?

多谢楼上!
等待。。。。。。


joners 2002-03-23
  • 打赏
  • 举报
回复
我现在想问的问题就是:
在98下,INADDR_BROADCAST,inet_addr("255.255.255.255")设置运行怎么会有问题?而inet_addr("192.168.0.255")就可以,why?

刚才看到了一篇文章,如下:
IPv4广播地址的定义是网络号码与网络掩码逻辑“非”之间的逻辑“或”。
例如一个地址为:197.8.43.211,其子网掩码为255.255.255.240则其网络号码为两者的二进制逻辑"与",即197.8.43.208 网络掩码的逻辑"非"为0.0.0.15,与网络号码197.8.43.208二进制逻辑"或"的结果为197.8.43.223,即该子网的广播地址.



我的问题是:如果是使用函数该怎么实现呢?

多谢楼上!
等待。。。。。。


joners 2002-03-23
  • 打赏
  • 举报
回复
谢谢,e_notimpl:
我也使用了setsockopt()
不过是int b=1;
setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char*)&b, sizeof(BOOL));
我想不会有问题的
毕竟我使用inet_addr("192.168.0.255")是成功了的啊

e_notimpl 2002-03-23
  • 打赏
  • 举报
回复
需要设置socket的options,才可以发送广播消息.
BOOL b = TRUE;
setsockopt(s, SOL_SOCKET, SO_BROADCAST, &b, sizeof(BOOL));
具体请查看MSDN关于setsockopt的说明。

16,551

社区成员

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

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

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