还是关于广播的问题

wliaoc 2011-02-12 02:16:13
广播时本机会收到自己发的信息,如何屏蔽?或者能与其他机器发来的信息区分开也行。其他机器不使用广播机制,用一对一UDP传输。
...全文
112 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyx100 2011-02-14
  • 打赏
  • 举报
回复
你的if(SOCKET_ERROR == recvfrom(sock, szBuf, MAX_BUFFER-1, 0, (LPSOCKADDR)&remote, &len))
recvfrom函数中的remote参数中就保存了发送端的IP和PORT信息了
m_tornado 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wliaoc 的回复:]
引用 6 楼 ouyh12345 的回复:

自己写一个协议,用id区分是否为本机


我三楼获取数据里的remote能获取到发方IP吗?
[/Quote]
可以的,断点到recvfrom可以看见
Eleven 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wliaoc 的回复:]
引用 6 楼 ouyh12345 的回复:

自己写一个协议,用id区分是否为本机


我三楼获取数据里的remote能获取到发方IP吗?
[/Quote]
你的if(SOCKET_ERROR == recvfrom(sock, szBuf, MAX_BUFFER-1, 0, (LPSOCKADDR)&remote, &len))
recvfrom函数中的remote参数中就保存了发送端的IP和PORT信息了
wliaoc 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ouyh12345 的回复:]

自己写一个协议,用id区分是否为本机
[/Quote]

我三楼获取数据里的remote能获取到发方IP吗?
wliaoc 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 aaadddzxc 的回复:]

难道你没封装广播头啊?

我是通过用户来判断的,你可以通过服务地址来判断,其实方法很多1

C/C++ code

//是否来自自己
if (strcmp(pMCHead->szUser,m_szUser) == 0)
{
return;
}
[/Quote]

目前没有用广播头,只有数据包头,有问题吗?
wliaoc 2011-02-14
  • 打赏
  • 举报
回复
谢谢大家!!
xengine-qyt 2011-02-13
  • 打赏
  • 举报
回复
难道你没封装广播头啊?

我是通过用户来判断的,你可以通过服务地址来判断,其实方法很多1


//是否来自自己
if (strcmp(pMCHead->szUser,m_szUser) == 0)
{
return;
}
jspkiss 2011-02-12
  • 打赏
  • 举报
回复
广播时,消息内附带发送方IP,接收时对比一下,以前做的 飞鸽好像就是这样搞的
ouyh12345 2011-02-12
  • 打赏
  • 举报
回复
自己写一个协议,用id区分是否为本机
wliaoc 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 n_star 的回复:]

为什么不在广播开始的时候,就把自己从发送队列里面删除呢
[/Quote]

广播是局域网内计算机都能收到的吧,怎么删除?
N_star 2011-02-12
  • 打赏
  • 举报
回复
为什么不在广播开始的时候,就把自己从发送队列里面删除呢
wliaoc 2011-02-12
  • 打赏
  • 举报
回复

char szBuf[MAX_BUFFER] = {0};
SOCKADDR_IN remote;
memset(&remote, 0, sizeof(remote));
int len = sizeof(remote);
while(TRUE)
{
if(SOCKET_ERROR == recvfrom(sock, szBuf, MAX_BUFFER-1, 0, (LPSOCKADDR)&remote, &len))
{
printf("recvfrom failed with error: %d\n", WSAGetLastError());
continue;
}
printf("recv data: <%s : %d> %s\n", inet_ntoa(remote.sin_addr), ntohs(remote.sin_port), szBuf);
}


是否remote.sin_addr就是发方的ip?是的话就可以区别开了
手机写程序 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 i03630211 的回复:]
比较接收消息的IP地址不行吗,和本机一样就不处理,或者就是在发送的时候把本机的剔除掉
[/Quote]
或者消息里附带发送方的IP地址。
还在查 2011-02-12
  • 打赏
  • 举报
回复
比较接收消息的IP地址不行吗,和本机一样就不处理,或者就是在发送的时候把本机的剔除掉

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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