udp编程(指定源端口和目的端口)---linux

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

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

    源地址+源端口

    local_addr.sin_family = AF_INET;
    local_addr.sin_addr.s_addr = inet_addr(localIP);
    local_addr.sin_port = htons(localPort);

    目的地址+目的端口

    dst_addr.sin_family = AF_INET;
    dst_addr.sin_addr.s_addr = inet_addr(dstIP);
    dst_addr.sin_port = htons(dstPort);
    

把源地址和源端口绑定到m_socket
    if(bind(m_socket, (struct sockaddr *) &local_addr, sizeof(local_addr)) < 0) {
        LOG(ERROR) << "bind local address error, ";
        return;
    }
 

用m_socket连接目的地址和目的端口
    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、付费专栏及课程。

余额充值