我在C语言的网络编程方面有一些经验,但在我的新项目中,我有/使用c ++。我的问题现在有点笼统,是否有任何c ++特定的库已经可用于网络编程,或者我只是使用与C中相同的方法?例如。为了获得C中的IP地址,我会做类似的事情:
fd = socket(AF_INET, SOCK_DGRAM, 0);
ifr.ifr_addr.sa_family = AF_INET;
strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);
ioctl(fd, SIOCGIFADDR, &ifr);
strncpy(ip, inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr), IP_ADDR_LEN);
ioctl(fd, SIOCGIFNETMASK, &ifr);
strncpy(netmask, inet_ntoa(((struct sockaddr_in *)&ifr.ifr_netmask)->sin_addr), IP_ADDR_LEN);
close(fd);
我知道我可以简单地在c ++中使用相同的代码,但是会不会有任何带有方法的类来使它变得更容易"?
答案 0 :(得分:3)
您想要的库是asio
。它可以单独使用,也可以作为boost库的一部分。
它是免费的跨平台,支持多线程,异步套接字,同步套接字,定时器,工作队列....
如果没有符合c ++标准,它就像接近'标准'一样。
http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio.html