vc socket编程:用sendto发给别人的信息为什么我也收到了

liubingzhangqiang 2008-04-12 03:54:30
大家好:
我在用vc socket编程的时候出现了很郁闷的结果:

sockaddr_in addrTo;
addrTo.sin_addr.S_un.S_addr=htonl(inet_addr((const char *)&RequestIP));
addrTo.sin_family=AF_INET;
addrTo.sin_port=htons( RECVPORT );

err=sendto(m_sockBSend,"Reqshow",strlen("Reqshow")+1,0,(sockaddr*)&addrTo,sizeof(sockaddr));
其中RequestIP是别人的ip,为什么用sendto发送时,我也接到了Reqshow这个消息
...全文
214 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
liubingzhangqiang 2008-04-13
  • 打赏
  • 举报
回复
我终于解决了,谢谢各位,原来addrTo.sin_addr.S_un.S_addr=htonl(inet_addr((const char *)&RequestIP)); 这个转化把地址转化错误了:RequestIP直接是CString类型,所以用一下inet_addr(RequestIP);就可以了:
谢谢各位提醒和帮忙
dicktion 2008-04-12
  • 打赏
  • 举报
回复
你的地址不是个广播地址或者是组播地址吧,检查一下这方面,要不然不会出现的!
liubingzhangqiang 2008-04-12
  • 打赏
  • 举报
回复
是在程序里面recv收到的
michney 2008-04-12
  • 打赏
  • 举报
回复
lz你是怎么收到的
是在程序里面recv收到的,还是通过sniffer,ethereal这些抓包工具收到的?
这一点很关键
liubingzhangqiang 2008-04-12
  • 打赏
  • 举报
回复
怎么过滤自己的消息?
王集鹄 2008-04-12
  • 打赏
  • 举报
回复
相信自己测试的结果。

先把自己发的消息过滤掉再说。。。
liubingzhangqiang 2008-04-12
  • 打赏
  • 举报
回复
能收到是对的,但是底层都屏蔽了,不是自己的自动放弃
baihacker 2008-04-12
  • 打赏
  • 举报
回复
以太网内发消息是广播的,这是常识

这里说错了,虽然是单播,但是整个网络能收到.
不好意思.
liubingzhangqiang 2008-04-12
  • 打赏
  • 举报
回复
但是我是发给别人地址的,自己发送的难道自己也能接收到。而且是反复试验都能接收到
baihacker 2008-04-12
  • 打赏
  • 举报
回复
同一个冲突域内是这样的
liubingzhangqiang 2008-04-12
  • 打赏
  • 举报
回复
以太网都是广播消息吗?
我记得不是这样的啊
baihacker 2008-04-12
  • 打赏
  • 举报
回复
以太网内发消息是广播的,这是常识
你发的消息同一个冲突域内都能收到
如果检测到同时有别的主机发消息,那么消息发送失败,会在隔一段时间重发(CSMA/CD协议)
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-04-12 03:54
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下