ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[转] exosip2-5.1.0 TCP传输方式使用摘录

2020-01-16 13:43:15  阅读:451  来源: 互联网

标签:5.1 socket 端口 传输方式 sock tcp TCP 端口号


1、使用TCP发送消息端口随机问题
  问题:使用exosip2 主动发送TCP消息时端口不固定;
代码分析:
  首先exoisp2中TCP方式发送数据的sock有两种来源(eXtl_tcp.c):

《1》、tcp_tl_read_message函数中accept函数返回的socket,最多200个;

在这里插入图片描述

这个是作为服务器被动连接,返回的sock绑定的端口号都是我们用eXosip_listen_addr设置的;

《2》、主动发起TCP连接时新建立的socket;

在这里插入图片描述
在_tcp_tlconnect_socket中创建新的socket但是有一个if判断来决定是否进行端口绑定,判断如下:

[外链图片转存失败(img-sZBtuQMl-1564657065526)(en-resource://database/3076:1)]
如果没有进行端口绑定,就会随机选择一个端口号,这就是问题所在。

判断条件中的ai_addr_len设置是在tcp_tl_open中设置,但是有一个宏控制住了,该宏默认是没定义的,如下:

在这里插入图片描述
所以如果把该宏打开我们就能使用我们设置的端口号发送数据了,但是该 宏ENABLE_MAIN_SOCKET的作用并没有提及,所以不知道开启后会有什么影响。eXtl_tls.c中说是阻止不安全的tls连接,感觉和tcp的是没有关系的。

在这里插入图片描述
2、额外设置
  需要将eXtl_tcp.c中的被设置为SO_REUSEADDR 的sock,再在此基础上添加SO_REUSEPORT,不然发送消息的sock创建失败。

setsockopt (sock, SOL_SOCKET, SO_REUSEPORT, (void *) &valopt, sizeof (valopt));
1
3、结果:

在这里插入图片描述

————————————————
版权声明:本文为CSDN博主「王log」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fpgatom/article/details/98090458

gouguofei 发布了32 篇原创文章 · 获赞 8 · 访问量 15万+ 私信 关注

标签:5.1,socket,端口,传输方式,sock,tcp,TCP,端口号
来源: https://blog.csdn.net/gouguofei/article/details/104002934

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有