我是编程的新手,希望对此套接字函数connect()有更好的了解。我已经阅读了许多说明,但是我不明白此语法:

int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen)


说明:addr参数是指向结构的指针,该结构指定此套接字将绑定到的地址。

这是我学习代码的一部分:

  connect(socket_desc ,( struct sockaddr *) &server , sizeof(server)) < 0)


谁能解释为什么括号中有一个指针运算符和引用运算符之后的结构?

最佳答案

谁能解释为什么括号中有一个指针运算符和引用运算符之后的结构?


括号用于类型转换,“&”号是地址运算符。该代码获取结构变量(可能是sockaddr_insockaddr_in6,但可以是任何sockaddr兼容结构)的内存地址,然后将该内存地址类型转换为sockaddr指针。

套接字支持许多不同类型的寻址方案,并且为每种寻址方案定义了不同的sockaddr_...结构类型。但是处理地址的套接字API函数仅接受sockaddr*参数,因此需要类型转换。

关于c++ - C++/引用运算符和指针中的Socket connect()函数说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30009407/

10-09 00:24