当前位置: 技术问答>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的指针