metartc5_jz源码阅读-g_yang_ice_stun_receive

//收到stun服务器的返回数据
void g_yang_ice_stun_receive(char *data, int32_t size, void *user) {
	if (user == NULL)		return;
	//拿到请求的StunRequest
	YangIceStunRequest* request=(YangIceStunRequest*)user;

	//0x00或0x01为stun返回数据的起始标记。
	uint8_t bt=(uint8_t)data[0];
	if(size>0&&(bt==0x00||bt==0x01)){
		int32_t err = 0;

		//decode Stun服务器返回的data,放到response中,如果decode失败直接返回。
		YangStunPacket response;
		memset(&response,0,sizeof(YangStunPacket));
		if ((err = request->stun->decodeStunServer(&response,data, size)) != 0) {
            yang_error("decode stun packet failed");
			return;
		}

		//从response中取出ip地址和端口号,这是拿到了公网ip地址用于p2p打洞
		request->ip= yang_get_be32((uint8_t*)(&response.mapped_address));
		request->port=response.mapped_port;

		request->response=yangtrue;
		uint8_t* ip=(uint8_t*)&request->ip;
		yang_trace("\nstun ip=%u.%u.%u.%u,stun port=%d",ip[0],ip[1],ip[2],ip[3],request->port);
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王方帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值