使用ACE_SOCK_SEQPACK_Association获取socket连接的本地及远程IP端口信息

本文展示了一个使用ACE库进行网络编程的例子,通过该示例可以了解如何建立客户端与服务器之间的连接,并获取本地及远程地址信息。

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

int connect(const std::string& ip, int port)
{
    ACE_INET_Addr portAddr(port, ip.c_str());
    ACE_SOCK_Connector connector;
    ACE_SOCK_Stream peer;

    if (-1 == connector.connect(peer, portAddr))
    {
        std::cout << "连接服务器(" << ip << ":" << port << ")失败: " << ACE_OS::strerror(ACE_OS::last_error()) << std::endl;
        return -1;
    }

    ACE_INET_Addr local;
    size_t addr_size = 1;
    ACE_SOCK_SEQPACK_Association ssa(peer.get_handle());
    ssa.get_local_addrs(&local, addr_size); // 获取连接本地的IP和端口

    char buff[64] = { 0 };
    local.addr_to_string(buff, 63); // 格式为IP:Port
    std::cout << buff << std::endl;

    ACE_INET_Addr remote;
    addr_size = 1;
    ssa.get_remote_addrs(&remote, addr_size); // 获取连接远端的IP和端口
    ACE_OS::memset(buff, 0, 64);
    local.addr_to_string(buff, 63); // 格式为IP:Port
    std::cout << buff << std::endl;

    return 0;
}

转载于:https://www.cnblogs.com/panjianfeng1979/archive/2013/05/10/3070634.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值