免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1636 | 回复: 1
打印 上一主题 下一主题

[网络] 请教一个UDP发包的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-04 15:29 |只看该作者 |倒序浏览
    用PC机的虚拟机给上单元发UDP包(组播模式,上单元已经加入组播),实现控制上单元的动作,能完全实现。现在把同样的程序通过交叉编译,放arm上来控制上单元,结果发现,如果控制指令小于或等于两字节,则上单元不回应,而大于或等于3字节的UDP包,上单元有回应。
   通过wrieshark抓包对比PC和arm板子发的包,发现完全无差别,但是小于2字节的包,上单元就是不予理睬。请教下这个是什么原因,是不是嵌入式对UDP最小包有限制?但是即使有限制,arm也把包发出去了啊
下面是部分代码:
#define MCAST_PORT 6680
#define MCAST_ADDR "236.6.7.10"
#define MCAST_INTERVAL 1
int main(int argc, char*argv)
{
char buffer[2]={0x10,0x20};
struct sockaddr_in mcast_addr;
        int s = socket(AF_INET, SOCK_DGRAM, 0);
        if (s == -1)
        {
                perror("socket()");
                return -1;
        }
        memset(&mcast_addr, 0, sizeof(mcast_addr));
        mcast_addr.sin_family = AF_INET;
        mcast_addr.sin_addr.s_addr = inet_addr(MCAST_ADDR);
        mcast_addr.sin_port = htons(MCAST_PORT);
        while(1) {
                int n = sendto(s,buffer,2,0,(struct sockaddr*)&mcast_addr,sizeof(mcast_addr));
                if( n < 0)
                {
                        perror("sendto()");
                        return -2;
                }
                sleep(MCAST_INTERVAL);
        }
        return 0;
}

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2014-04-07 11:53 |只看该作者
这么神奇,2字节的包上单元是收到了没处理还是没收到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP