exosip--tcp模块代码分析

本文详细分析了exosip在osip基础上实现的TCP传输机制,主要关注eXtl_tcp.c中的核心变量和关键函数,包括初始化、打开监听、多路复用、发送及接收消息、心跳保持等操作。这些函数为上层提供了对TCP的抽象,简化了使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

exosip在osip基础上,实现了rfc3261中的传输层(下文简称传输层,请不要和TCP传输层混淆)。本文初步分析下exosip传输层中的TCP传输机制

exosip的TCP主要是在eXtl_tcp.c中实现。

首先是核心变量

struct eXtl_protocol eXtl_tcp = {
  1,
  5060,
  "TCP",
  "0.0.0.0",
  IPPROTO_TCP,
  AF_INET,
  0,
  0,

  &tcp_tl_init,
  &tcp_tl_free,
  &tcp_tl_open,
  &tcp_tl_set_fdset,
  &tcp_tl_read_message,
  &tcp_tl_send_message,
  &tcp_tl_keepalive,
  &tcp_tl_set_socket,
  &tcp_tl_masquerade_contact,
  &tcp_tl_get_masquerade_contact,
  &tcp_tl_reset
};

这个结构体变量实际起了中间件的作用,对上层屏蔽了tcp/udp。所以对应其他传输方式(tls udp),有eXtl_tls eXtl_udp。

这些函数名相当清楚。

tcp_tl_init

初始化变量eXtltcp_reserved(C语言,没工厂,只能这样了)。这个变量保存TCP的监听、连接句柄和连接信息(ip\端口).

tcp_tl_free

清空、释放内存(这代码写的很谨慎,在释放前再对待释放区做清零,不太明白这样意义)

tcp_tl_open

创建监听socket(excontext->eXtltcp_reserved->tcp_socket

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值