当前位置: 技术问答>linux和unix
看看UDP socket 端口 自动绑定的怪事?
来源: 互联网 发布时间:2016-04-06
本文导语: struct sockaddr_in addrSrc; bzero(&addrSrc,sizeof(struct sockaddr_in)); addrSrc.sin_family = AF_INET; addrSrc.sin_addr.s_addr=htonl(INADDR_ANY); addrSrc.sin_port= htons(0); //自动绑定默认端口 因该是心痛默认的 ...
struct sockaddr_in addrSrc;
bzero(&addrSrc,sizeof(struct sockaddr_in));
addrSrc.sin_family = AF_INET;
addrSrc.sin_addr.s_addr=htonl(INADDR_ANY);
addrSrc.sin_port= htons(0); //自动绑定默认端口 因该是心痛默认的 在1024到5000之间
if(bind(m_socket,(struct sockaddr*)(&addrSrc),sizeof(addrSrc))==-1)
{
printf("socket bind error:%s.The SrcPort is in use.n",strerror(errno));
return false;
}
struct sockaddr_in sockadd;
socklen_t len = sizeof(struct sockaddr_in);
getsockname(m_socket,(struct sockaddr *)&sockadd,&len);
printf("%d",ntohs(sockadd.sin_port)); //可是我这样获取的端口大小确是32711
理论上所说当htons(0) 则自动分配的端口在1024与5000之间, 但是我把自动绑定端口打印的结果确实32711
这是为什么 呵呵 不明白!
bzero(&addrSrc,sizeof(struct sockaddr_in));
addrSrc.sin_family = AF_INET;
addrSrc.sin_addr.s_addr=htonl(INADDR_ANY);
addrSrc.sin_port= htons(0); //自动绑定默认端口 因该是心痛默认的 在1024到5000之间
if(bind(m_socket,(struct sockaddr*)(&addrSrc),sizeof(addrSrc))==-1)
{
printf("socket bind error:%s.The SrcPort is in use.n",strerror(errno));
return false;
}
struct sockaddr_in sockadd;
socklen_t len = sizeof(struct sockaddr_in);
getsockname(m_socket,(struct sockaddr *)&sockadd,&len);
printf("%d",ntohs(sockadd.sin_port)); //可是我这样获取的端口大小确是32711
理论上所说当htons(0) 则自动分配的端口在1024与5000之间, 但是我把自动绑定端口打印的结果确实32711
这是为什么 呵呵 不明白!
|
/proc/sys/net/ipv4/ip_local_port_range 这里的范围是多少呀?
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。