流媒體數據的數據接收
對于流媒體數據的接收端,首先需要調用 RTPSession 類的 PollData() 方法來接收發送過來的 RTP 或者RTCP 數據報。
JRTPLIB-3.11中修改PollData()方法為Poll(),使用都一樣
由于同一個 RTP 會話中允許有多個參與者(源),你既可以通過調用 RTPSession 類的
GotoFirstSource() 和 GotoNextSource() 方法來遍歷所有的源,也可以通過調用 RTPSession 類的GotoFirstSourceWithData() 和 GotoNextSourceWithData() 方法來遍歷那些攜帶有數據的源。在從 RTP 會話中檢測出有效的數據源之后,接下去就可以調用 RTPSession 類的 GetNextPacket() 方法從中抽取 RTP 數據報,當接收到的 RTP 數據報處理完之后,一定要記得及時釋放。
接收數據與發送數據一樣容易
接收數據與發送數據一樣容易。下面是recv()函數的函數定義:
intrecv(intsocket,char*buffer,intlen,intflags);
你可能已經看到了,這些參數與send()函數中的參數是一樣的,因此可以類似于下面這樣來調用它:
charbuffer[128];
intreceived;
received=recv(datasock,buffer,128,0);
這創建一個足夠容納128字節數據的緩沖區,然后就等待數據流入。需要注意的是,這一函數在接收滿128字節數據之前就可能返回,它最多只接收128字節,因此不必擔心緩沖區溢出。
同樣,如果函數執行失敗,則返回-1。表2.9列出了此函數的錯誤代碼。