我正在遵循 beej 的网络指南,进展非常顺利,因为我对一切都很了解,而且他解释得很好。然而,当我想测试他向我展示的一些很酷的东西时,这是行不通的! :(
我不确定 sockaddr_in 到底在哪里声明,但也许这里有人会帮助我!
这是我到目前为止所得到的(测试将字符串形式的 ip 转换为 4 字节整数的 ip,反之亦然):
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
int main(void)
{
sockaddr_in sin;
inet_pton(AF_INET, "192.168.2.1", &sin.in_addr);
char ip[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &sin.in_addr, ip, INET_ADDRSTRLEN);
printf("%s\n", ip);
return 0;
}
我再次对所有东西都一无所知,所以如果我真的很愚蠢,抱歉!
编辑:我使用的是一个名为 Mint 的 Linux Debian 发行版,这是否有帮助?
标准 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html says:
标头应定义 sockaddr_in 结构
你必须包括<netinet/in.h>
并声明sin
像这样:
struct sockaddr_in sin;
^^^^^^
要了解您为何需要struct
关键字,看这个C FAQ http://c-faq.com/struct/impltypedef.html。长话短说,没有隐含的typedef
in C.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)