ACE_INET_Addr::get_host_addr()令人抓狂的一面

本文提供了一个简单的C++代码示例,展示了如何使用ACEINET_Addr来设置和获取网络地址,包括主机名和端口号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//file testAddr.cpp
#include "ace/INET_Addr.h"


int main(int argc, char * argv[])
{
  ACE_INET_Addr addr;
  ACE_INET_Addr addr2;
  addr.set(1234,"235.0.0.1");
  addr2.set(2345,"235.0.0.2");
  const char *src_ip = addr.get_host_addr();
  const char *dst_ip = addr2.get_host_addr();
  char src_addr[64];
  char dst_addr[64];
  snprintf(src_addr,64,"%s:%d",addr.get_host_addr(),addr.get_port_number());
  snprintf(dst_addr,64,"%s:%d",addr2.get_host_addr(),addr2.get_port_number());
  printf("addr:[%s:%d],addr2:[%s:%d]\n",addr.get_host_addr(), addr.get_port_number(),addr2.get_host_addr(), addr2.get_port_number(
));
  printf("addr2:[%s:%d]\n",addr2.get_host_addr(), addr2.get_port_number());
  printf("addr:[%s:%d],addr2:[%s:%d]\n",src_ip, addr.get_port_number(),dst_ip, addr2.get_port_number());
  printf("addr:[%s:%d]\n",src_ip,addr.get_port_number());
  printf("addr2:[%s:%d]\n",dst_ip,addr2.get_port_number());
  printf("src_addr:%s,dst_addr:%s\n",src_addr,dst_addr);

  return 0;

}



#g++ -o test -lACE testAddr.cpp

#./test

addr:[235.0.0.1:1234],addr2:[235.0.0.1:2345]
addr2:[235.0.0.2:2345]
addr:[235.0.0.2:1234],addr2:[235.0.0.2:2345]
addr:[235.0.0.2:1234]
addr2:[235.0.0.2:2345]
src_addr:235.0.0.1:1234,dst_addr:235.0.0.2:2345

const char * ACE_INET_Addr::get_host_addr(void  )const

Return the "dotted decimal" Internet address representation of the hostname. This version is non-reentrant since it returns a pointer to a static data area. You should therefore either (1) do a "deep copy" of the address returned byget_host_addr(), e.g., using strdup() or (2) use the "reentrant" version of get_host_addr() described above.




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值