GB28181学习之路——构造osip_message_t

辗转好久找到了有效的方法,如下:

    osip_message_t *res;
	i=osip_message_init(&res);
    osip_message_set_version(res, osip_strdup("SIP/2.0"));
    osip_message_set_status_code(res, 401);
    osip_message_set_reason_phrase (res, osip_strdup("Unauthorized"));
    osip_from_clone(req->from, &res->from);
    osip_to_clone(req->to, &res->to);
    osip_call_id_clone(req->call_id, &res->call_id);
    osip_contact_t *contact = nullptr;
    osip_message_get_contact(req, 0, &contact);
    osip_uri_clone(osip_contact_get_url(contact), &res->req_uri);
    osip_cseq_clone(req->cseq, &(res->cseq));

    char *dest=NULL;
	size_t length=0;
	i = osip_message_to_str(res, &dest, &length);
	if (i!=0) { fprintf(stderr, "cannot get printable message : %d\n", i); return -1; }
	printf("message:\n%s\n", dest);
	osip_free(dest);

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
osip_message_t结构体是SIP协议栈中的一个重要数据结构,它用于存储SIP消息的各种信息,包括请求行、消息头、消息体等。下面是osip_message_t结构体的详细说明: ```c typedef struct osip_message osip_message_t; struct osip_message { int status_code; /* for SIP response only */ osip_from_t *from; osip_to_t *to; osip_via_t *vias; osip_call_id_t *call_id; osip_cseq_t *cseq; osip_contact_t *contact; osip_route_t *routes; osip_record_route_t *record_routes; osip_www_authenticate_t *www_authenticate; osip_proxy_authenticate_t *proxy_authenticate; osip_authorization_t *authorization; osip_proxy_authorization_t *proxy_authorization; osip_content_type_t *content_type; char *body; size_t body_len; char *reason_phrase; /* for SIP response only */ char *sip_version; /* for SIP response only */ char *sip_method; /* for SIP request only */ char *sip_uri; /* for SIP request only */ char *sip_body; /* for SIP request only */ size_t sip_body_len; /* for SIP request only */ int message_property; /* message type (REQUEST, RESPONSE) */ int message_flags; }; ``` 其中,字段的含义如下: - `status_code`:响应码,仅用于SIP响应消息。 - `from`:From头域。 - `to`:To头域。 - `vias`:Via头域。 - `call_id`:Call-ID头域。 - `cseq`:CSeq头域。 - `contact`:Contact头域。 - `routes`:Route头域。 - `record_routes`:Record-Route头域。 - `www_authenticate`:WWW-Authenticate头域。 - `proxy_authenticate`:Proxy-Authenticate头域。 - `authorization`:Authorization头域。 - `proxy_authorization`:Proxy-Authorization头域。 - `content_type`:Content-Type头域。 - `body`:消息体。 - `body_len`:消息体长度。 - `reason_phrase`:响应原因短语,仅用于SIP响应消息。 - `sip_version`:SIP协议版本,仅用于SIP响应消息。 - `sip_method`:SIP请求方法,仅用于SIP请求消息。 - `sip_uri`:SIP请求URI,仅用于SIP请求消息。 - `sip_body`:SIP请求消息体,仅用于SIP请求消息。 - `sip_body_len`:SIP请求消息体长度,仅用于SIP请求消息。 - `message_property`:消息类型,取值为REQUEST或RESPONSE。 - `message_flags`:消息标志。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值