bluedream770 发表于 2014-04-04 15:29

请教一个UDP发包的问题

    用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={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;
}

linux_c_py_php 发表于 2014-04-07 11:53

这么神奇,2字节的包上单元是收到了没处理还是没收到。
页: [1]
查看完整版本: 请教一个UDP发包的问题