2018-08-18-一例C语言Linux使用socket做udp的Server出现select的timeout问题

(使用场景:用select模式实现TCP和UDP的混合监听)
我遇到的一例C语言Linux使用socket做udp的Server出现select的timeout问题
extern int SSDP_PROT; /广播端口 ,默认1900/
int SSDP_PROT; /广播端口 ,默认1900/
SSDP_PROT = 1900;
初始化 socket 时,主要代码
。。。。。
struct sockaddr_in sockname = {0};
。。。。。
memset(&sockname, 0, sizeof(struct sockaddr_in));
sockname.sin_family = AF_INET;
sockname.sin_port = htons(SSDP_PROT);
sockname.sin_addr.s_addr = htonl(INADDR_ANY);
//bzero(&sockname, 8);
。。。。。
出现C语言Linux使用socket做udp的Server出现select的timeout问题
解决方法:
1,直接写死
sockname.sin_port = htons(1900);//htons(SSDP_PROT);
2,转一下
char port[8];
。。。。。
sockname.sin_port = htons(atoi(port));
3,转一下
unsigned short port = SSDP_PROT;
sockname.sin_port = htons(port);
我目前用的是第一种,直接点,看的清楚
原因:
未知,怀疑可能是嵌入式Linux的开发商给我的编译工具或SDK(开发商给我的)有问题