我有一些用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/

10-12 13:29