0
掩码的IP地址的二进制形式我正在寻找正确的方式来使用套接字执行掩码操作的IP地址。我试图使用inet_pton将ip地址转换为二进制文件,然后执行一个二进制文件和(&),但编译器抱怨我无法将sin_addr转换为unsigned int。有人能指导我采取正确的方法吗?套接字:如何使用inet_pton()
struct sockaddr_in sa;
struct sockaddr_in maska;
char str[INET_ADDRSTRLEN];
// store IP address and mask in sockaddr structs:
inet_pton(AF_INET, "192.0.2.33", &(sa.sin_addr));
inet_pton(AF_INET, "255.255.255.0", &(maska.sin_addr));
// Try to perform mask
sa.sin_addr = (unsigned long)sa.sin_addr & (unsigned long)maska.sin_addr;
// now get it back and print it
inet_ntop(AF_INET, &(sa.sin_addr), str, INET_ADDRSTRLEN);
printf("%s\n", str);
有很多比只多不少的'sin_addr'。很确定你正在寻找'sa.sin_addr.s_addr = sa.sin_addr.s_addr&maska.sin_addr.s_addr;'之类的东西,但我相信有一个更好的方法来做到这一点。 – WhozCraig
@ WhozCraig谢谢。是的,我正在寻找一个套接字函数,它执行掩码操作并返回了掩码地址,但是我没有发现任何具有该功能的东西。你的方法虽然工作。 –