我有一些用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 ++中简单地使用相同的代码,但是是否有任何类的方法使其变得更“容易”?
最佳答案
您要的库是asio
。它可以独立使用,也可以作为boost库的一部分使用。
它是免费且跨平台的,支持多线程,异步套接字,同步套接字,计时器,工作队列。
它几乎不像c ++标准那样成为“标准”。
http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio.html
http://think-async.com/Asio
关于c++ - C++网络编程库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27405143/