linux udp 指定本机发送源端口以及目标端口

本文介绍了如何使用bind和connect函数在本地建立并监听特定端口,以及连接到远程目标地址和端口,实现数据通信。示例代码展示了从192.168.0.1:8888向192.168.0.2:9999发送和接收消息的过程。
摘要由CSDN通过智能技术生成

通过bind绑定本机地址(local addr)以及端口(local port), 实现从本机端口(local port)发送以及监听;

通过connect指定目的地址(dst addr)以及目的端口(dst port), 实现目标地址的绑定;

    dst_addr.sin_family = AF_INET;
    dst_addr.sin_addr.s_addr = inet_addr(dstIP);
    dst_addr.sin_port = htons(dstPort);
    
    
    local_addr.sin_family = AF_INET;
    local_addr.sin_addr.s_addr = inet_addr(localIP);
    local_addr.sin_port = htons(localPort);
    if(bind(m_socket, (struct sockaddr *) &local_addr, sizeof(local_addr)) < 0) {
        LOG(ERROR) << "bind local address error, ";
        return;
    }

    if(connect(m_socket, (struct sockaddr*)&dst_addr,sizeof(dst_addr)) < 0) {
        LOG(ERROR) << "connect to server error";
        return;
    }

实现效果

localaddr(192.168.0.1) local port (8888)

dstaddr(192.168.0.2) local port(9999)

192.168.0.1:8888 -> 192.168.0.2:9999 发送消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值