如何在C中比较套接字地址?

ZHO*_*HOU 17 c sockets

我的意思是,struct sockaddr当我检查两个是否struct sockaddr有相同的IP地址和端口号时,我应该比较哪些字段?那怎么样sockaddr_in

可我只是投sockaddr_insockaddr,并把它比真实的sockaddr

Joh*_*nck 11

首先,您需要检查系列(IPv4,IPv6或其他).然后你可以将每个sockaddr转换为适当的"派生"类型,如sockaddr_in.了解Apple如何在此处执行此操作:http://www.opensource.apple.com/source/postfix/postfix-197/postfix/src/util/sock_addr.c

  • 这不是答案,因为代码没有给出“ SOCK_ADDR_IN_ADDR”或“ SOCK_ADDR_IN6_ADDR”的定义。但是,该代码可能会直接为IPv4比较s_addr,并为IPv6比较整个结构是否相等。 (2认同)