Symbian 使用 RTP 发送数据的流程
2010-03-22 16:25:00 来源:WEB开发网/********************此文可以被转发,但请转发者保留作者的署名权
****李浩
****msn:lihao_nx@hotmail.com
****
****email:lihaoyxj@gmail.com
****出处:lihaoyxj.cublog.cn
*****************/
例子为5rd中的,而帮助为3rd,有一些接口在3rd帮助中是没有的,而针对RTP传输在SYMBIAN上我也没做过,现在只是整理,待后边验证,如果有什么错再改
假设要连接的相关参数为
远程IP:92.168.0.6
远程端口: 8000
本地端口: 7000
包大小:4096,分析NOKIA的RTP例子
1. 以Udp初始化RhostResolver,并获取与远程地址的一个连接
RHostResolver resolver;
User::LeaveIfError(resolver.Open(iSockServ,KAfInet,KProtocolInetUdp));
CleanupClosePushL(resolver);
TNameEntry entry;
TRequestStatus status;
resolver.GetByName(KDestAddr,entry,status);
User::WaitForRequest(status);
User::LeaveIfError(status.Int());
CleanupStack::PopAndDestroy(1);//close resolver
TSockAddr remote = entry().iAddr;
remote.SetPort(dport);
2. 创建一个本地连接地址
TInetAddr localAddr;
localAddr.SetPort(iLocalPort);
3. 创建一个本地的SOCKET并创建一个RTCP
User::LeaveIfError(iSocket.Open(iSocketServ, KAfInet,KSockDatagram, KProtocolInetUdp));
User::LeaveIfError(iSocket.Bind(localAddr));
localAddr.SetPort(iLocalPort + 1);
User::LeaveIfError(iRtcpSocket.Open(iSocketServ, KAfInet,KSockDatagram, KProtocolInetUdp));
User::LeaveIfError(iRtcpSocket.Bind(localAddr));
4. 本地socket连到到用程,并用rtpsession打开它,同时打开rtcp
TRequestStatus stat;
iSocket.Connect(iDestAddr,stat);
User::WaitForRequest(stat);
User::LeaveIfError(stat.Int());
iDestAddr.SetPort(iDestAddr.Port() + 1);
iRtcpSocket.Connect(iDestAddr,stat);
更多精彩
赞助商链接