当设备注册进来时,我们需要记录下设备的IP和端口,以便后续与其进行通信,其实好多地方都可以获取到,但是不一定是准确的,尤其是经过映射的地址更是不好难以捕捉。

今天写一下怎么样获取设备的IP和端口,对映射与非映射同样有效。先构造获answer,然后再answer的Via header中取,这时answer中含有映射地址的信息:

if (MSG_IS_REGISTER(je->request))
{int i = eXosip_message_build_answer (m_Ctx, je->tid, 200, &asw_register);if(i != 0)return;char addr[20];int port;memset(addr, '\0', strlen(addr));osip_via_t* via = nullptr;osip_message_get_via(asw_register, 0, &via);if(!via || !via->host){eXosip_lock (m_Ctx);eXosip_message_send_answer (m_Ctx, je->tid, 400, NULL);eXosip_unlock (m_Ctx);return;}osip_generic_param_t* br = nullptr;osip_via_param_get_byname (via, "received", &br);if (br != NULL && br->gvalue != NULL)strcpy(addr, br->gvalue);elsestrcpy(addr, via->host);osip_via_param_get_byname(via, "rport", &br);if(!br || !br->gvalue){eXosip_message_send_answer (m_Ctx, je->tid, 400, NULL);return;}port = atoi(br->gvalue);eXosip_lock (m_Ctx);eXosip_message_send_answer (m_Ctx, je->tid, 200, asw_register);eXosip_unlock (m_Ctx);
}

GB28181学习之路——eXosip获取IP和端口相关推荐

  1. 从sockaddr结构获取IP和端口

    前言 从sockaddr结构中提取IP, 先将结构sockaddr转为sockaddr_in结构,然后用在利用相关API将其中的IP地址从网络格式转化我们熟悉点分十进制的字符串. 一.sockaddr ...

  2. php获取ip与端口,PHP获取IP与连接数,并获取IP所在地址

    php-cli下执行 windows下的运维工具,改成linux也很方便 用PHP获取IP与连接数,并获取IP所在地址,主要针对80端口,其他端口也能看到 开启反解ip可判断是否是蜘蛛. //获取连接 ...

  3. Qt学习之路之获取本机IP

    Qt提供的好几个类都可以获取到本机IP:IP4与IP6.这里,笔者使用QT获取本IP的方式如下: 头文件名: gethostIP_widget.h 头文件代码如下: #ifndef GETHOSTIP ...

  4. GB28181学习之路——PS流解析H264

    磕磕绊绊的做了出来,也算为自己留个资料吧.先讲理论再上代码.挑些重点讲. 1. 首先就是获取到 rtp 包,rtp包的结构是:rtp包头+payload,payload就是我们要的ps包,rtp包头的 ...

  5. 微信小程序学习之路——API获取二维码

    获取二维码 通过后台接口可以获取小程序任意页面的二维码,扫描该二维码可以直接进入小程序对应的页面. 可以使用开发工具 1.02.1803130 及以后版本通过二维码编译功能调试所获得的二维码 为满足不 ...

  6. GB28181学习之路——再探invite信令规范

    最近对接压缩机和nvr设备,出现了很多的问题,原因是之前对接IPC所写的信令不规范,所以这次暴露出了很多问题. wireshark抓的包忘记保存了,懒着抓了,就干吧的写吧. 一.sip头proxy.t ...

  7. 海神之光Matlab王者学习之路---代码获取方式

  8. shodan API 获取IP开放端口

    # -*- coding: utf-8 -*-""" @author:随时静听 @file: shodanForIp.py @time: 2019/01/28 @emai ...

  9. Java获取IP和端口(Linux)

    HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder .getRequestAttributes( ...

  10. 【Qt Quick】QNetworkDatagram获取Ip及端口

    系统:win10 通信:UDP 简介 在写聊天软件练习时,作为服务器端需要优先知道客户端的Ip及地址,客户端发送数据过来时用QNetworkDatagram接收 代码 void UDPServer:: ...

最新文章

  1. CSS 单行溢出文本只显示部分内容
  2. 豆瓣9分以上,这7本Java经典名著,你还缺哪本?
  3. Kubernetes 使用 ceph-csi 消费 RBD 作为持久化存储
  4. 【转】VS 安全开发生命周期(SDL)检查
  5. 使用tensorflow serving部署keras模型(tensorflow 2.0.0)
  6. 机器学习(Machine Learning)- 吴恩达(Andrew Ng)-学习笔记
  7. MySQL last_insert_id()函数
  8. 彻底理解内存泄漏,memory leak
  9. JavaWeb——jsp原理
  10. 面向对象编程(七):接口(抽象类)
  11. 【CocoStudio游戏开发之一】制作多分辨率UI布局
  12. 数模比赛经验分享(美赛分享)
  13. 学习《自己动手写网络爬虫》之记录2
  14. 纠错码与魔术(一)——纠错码与汉明码简介
  15. 百度导航怎么不显示服务器,win7系统百度首页导航不见了怎么办
  16. VMWare VMNet 8 的配置使用
  17. RTX3080Ti和RTX2080Ti性能差距 RTX3080Ti和RTX2080Ti参数对比哪个好
  18. BUUCTF web(三)
  19. Java 统计接口消耗时间
  20. Python-实现语音识别并批处理标注(重命名)文件

热门文章

  1. 计算机技术与电气工程专业代码,电气工程及其自动化专业代码:080601 [本科]
  2. java图片自动盖章,一种自动盖章装置的制作方法
  3. 设置虚拟机桥接模式以及解决桥接模式上不了网以及ping不通主机的问题
  4. MYSQL卸载教程(5.7)
  5. 手把手教你制作可以上线官方商店的微信动态表情包
  6. 统计学知识系列:一篇搞懂假设检验
  7. 2013总结-2014计划
  8. 微信公众号开发之删除公众号的菜单按钮
  9. origin函数拟合
  10. 又挖到宝藏了,低调使用