跟踪了几天,问题大概出在了模拟器的手机本地IP获取。换后得到的IP有点怪。IP转换函数:
static int st_comm_getIpAddr(char *ipaddr, size_t len)
{
        int     fd;
        char    buffer[COMM_ADDRSIZE];
        struct  ifreq   ifr;
struct sockaddr_in *addr;    if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) >= 0)
    {
        strncpy(ifr.ifr_name, COMM_ETHNAME, IFNAMSIZ);
        ifr.ifr_name[IFNAMSIZ - 1] = '\0';
        if (ioctl(fd, SIOCGIFADDR, &ifr) == 0)
        {
addr = (struct  sockaddr_in *)&(ifr.ifr_addr);
inet_ntop(AF_INET, &addr->sin_addr, buffer, 20);        }
else
{
close(fd);
return(-1);
}
}
else
{
return(-1);
} if (strlen(buffer) > len-1)
{
return(-1);
}
strncpy(ipaddr, buffer, len); close(fd);
return(0);
}
这个函数转换后的IP我这边为:10.0.2.15.这是在手机的模拟器解析的,我要连的设备是在局域网里面。
然后我用Windows本地IP获取,在Windows上测试没有问题,手机上不行。多播可以播放视频。函数为:
//get the host IP address if(gethostname(hostname, 128) == 0 )
{
phost = gethostbyname(hostname);
paddr = inet_ntoa (*(struct in_addr *)phost->h_addr_list[0]);
strncpy(buffer,paddr,16);
}获取到的IP为:127.0.0.1 。这个IP我感觉肯定有问题。加入多播组就没成功。而且这会我windows下的获取到的IP是我本机的局域网IP,192.168.5.239 我要通迅设备的IP为局域网 192.168.5.244 。 
这里问下eclipse里面的模拟器该怎么配置IP? 安卓在手机里面UDP通信有什么特殊的要求?手机的本地IP怎么获取?谁知道是什么原因?手机的IP获取有什么不一样吗?