当前位置: 技术问答>linux和unix
linux 网络编程
来源: 互联网 发布时间:2016-08-03
本文导语: bind(socket s,(struct sockadd *)&server,sizeof(server)) ; (struct sockadd *)&server 这句话不是很理解,我怎么感觉通常都不用取地址符号啊? 哪位大侠帮助解释一下,加&和不加的区别。 | server 是一个struct...
bind(socket s,(struct sockadd *)&server,sizeof(server)) ;
(struct sockadd *)&server 这句话不是很理解,我怎么感觉通常都不用取地址符号啊?
哪位大侠帮助解释一下,加&和不加的区别。
(struct sockadd *)&server 这句话不是很理解,我怎么感觉通常都不用取地址符号啊?
哪位大侠帮助解释一下,加&和不加的区别。
|
server 是一个struct sockaddr_in 类型的结构体,里面包含ip地址及端口号等信息不是一个指针;
&server是取这个结构体的地址;
(struct sockaddr*)&server是将其地址类型给转换一下;
至于转换的原因是因为,struct sockaddr与 struct sockaddr_in 有些不同,像我们的ip地址通常为IPV4, 这时我们用第二种,但是也会有IPV6格式的ip地址,我们就要转换为通用地址格式,也就是第一种。
&server是取这个结构体的地址;
(struct sockaddr*)&server是将其地址类型给转换一下;
至于转换的原因是因为,struct sockaddr与 struct sockaddr_in 有些不同,像我们的ip地址通常为IPV4, 这时我们用第二种,但是也会有IPV6格式的ip地址,我们就要转换为通用地址格式,也就是第一种。
|
默认的只能绑定一个,但可以通过REUSE选项来取消这一限制
|
bind的原型
int bind(int sockfd,struct sockaddr *my_addr, int addrlen);
你那个代码里
server是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针
这句话就是取server的地址 再将其转换为指向struct sockaddr的指针
int bind(int sockfd,struct sockaddr *my_addr, int addrlen);
你那个代码里
server是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针
这句话就是取server的地址 再将其转换为指向struct sockaddr的指针
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。