bind(socket s,(struct sockadd *)&server,sizeof(server)) ;
(struct sockadd *)&server 这句话不是很理解,我怎么感觉通常都不用取地址符号啊?
哪位大侠帮助解释一下,加&和不加的区别。
指针。
bind的原型
int bind(int sockfd,struct sockaddr *my_addr, int addrlen);
你那个代码里
server是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针
这句话就是取server的地址 再将其转换为指向struct sockaddr的指针
如果是这样的话,那不是将地址转为指向struct sockaddr的指针么?
如果不加取地址比较容易理解,毕竟(struct sockadd *),将它转换为一个结构体指针。
对了,一个sockfd,是不是只能绑定到一个my_addr 上?
server 是一个struct sockaddr_in 类型的结构体,里面包含ip地址及端口号等信息不是一个指针;
&server是取这个结构体的地址;
(struct sockaddr*)&server是将其地址类型给转换一下;
至于转换的原因是因为,struct sockaddr与 struct sockaddr_in 有些不同,像我们的ip地址通常为IPV4, 这时我们用第二种,但是也会有IPV6格式的ip地址,我们就要转换为通用地址格式,也就是第一种。