我是编程的新手,希望对此套接字函数connect()有更好的了解。我已经阅读了许多说明,但是我不明白此语法:
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen)
说明:addr参数是指向结构的指针,该结构指定此套接字将绑定到的地址。
这是我学习代码的一部分:
connect(socket_desc ,( struct sockaddr *) &server , sizeof(server)) < 0)
谁能解释为什么括号中有一个指针运算符和引用运算符之后的结构?
最佳答案
谁能解释为什么括号中有一个指针运算符和引用运算符之后的结构?
括号用于类型转换,“&”号是地址运算符。该代码获取结构变量(可能是sockaddr_in
或sockaddr_in6
,但可以是任何sockaddr
兼容结构)的内存地址,然后将该内存地址类型转换为sockaddr
指针。
套接字支持许多不同类型的寻址方案,并且为每种寻址方案定义了不同的sockaddr_...
结构类型。但是处理地址的套接字API函数仅接受sockaddr*
参数,因此需要类型转换。
关于c++ - C++/引用运算符和指针中的Socket connect()函数说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30009407/