Hi,
I am developing simple peer-peer RTC application for monitoring the SDP packets and i need to set the TLS security for the transport.
But iam struggling to achieving this.
Iam using IP addresses as SIP URI for communication.
I am using IRTCClientProvi sioning::GetPro file()
IRTCClientProfi le::EnablePrsen ceEx()
IRTCClientProvi sioning::Enable ProfileEx()
But iam not able to establish a connection between 2 endpoints as iam not able to register to the server.
This is the code snippet :
using System;
using System.Collecti ons.Generic;
using System.Componen tModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows. Forms;
using RTCCORELib;
using System.Xml;
using System.Xml.Seri alization;
namespace RTC_1._api
{
public partial class Form1 : Form
{
RTCClientClass _rtc = new RTCClientClass( );
IRTCClientProvi sioning2 userCreation;
IRTCSession _session; //To create and initializes a session of communication.
IRTCProfile userprofile; //An object for the profile of the user
IRTCClientPrese nce2 presence;
public Form1()
{
InitializeCompo nent();
}
public void RTC_IRTCEventNo tification_Even t_Event(RTC_EVE NT RTC_event, object pEvent)
{
switch (RTC_event)
{
case RTC_EVENT.RTCE_ SESSION_STATE_C HANGE:
{
IRTCSessionStat eChangeEvent sessionEvent = null;
sessionEvent = (IRTCSessionSta teChangeEvent)p Event;
OnIRTCSessionSt ateChangeEvent( sessionEvent);
break;
}
case RTC_EVENT.RTCE_ MEDIA:
{
IRTCMediaEvent mediaEvent = null;
mediaEvent = (IRTCMediaEvent )pEvent;
OnIRTCMediaEven t(mediaEvent);
break;
}
case RTC_EVENT.RTCE_ MESSAGING:
{
IRTCMessagingEv ent IMEvent = null;
IMEvent = (IRTCMessagingE vent)pEvent;
OnIRTCIMEvent(I MEvent);
break;
}
case RTC_EVENT.RTCE_ PROFILE:
{
MessageBox.Show ("RTCE_PROFILE" );
IRTCProfileEven t2 profileEvent = null;
profileEvent = (IRTCProfileEve nt2)pEvent;
OnProfileEvent( profileEvent);
break;
}
case RTC_EVENT.RTCE_ REGISTRATION_ST ATE_CHANGE:
{
MessageBox.Show ("RTCE_REGISTRA TION_STATE_CHAN GE");
IRTCRegistratio nStateChangeEve nt regEvent = null;
regEvent = (IRTCRegistrati onStateChangeEv ent)pEvent;
OnRegChangeEven t(regEvent);
break;
}
case RTC_EVENT.RTCE_ CLIENT:
{
IRTCClientEvent clientEvent;
clientEvent = (IRTCClientEven t)pEvent;
OnClientEvent(c lientEvent);
break;
}
}
}
private void OnClientEvent(I RTCClientEvent clientEvent)
{
RTC_CLIENT_EVEN T_TYPE clientState;
clientState = clientEvent.Eve ntType;
if (clientState == RTC_CLIENT_EVEN T_TYPE.RTCCET_A SYNC_CLEANUP_DO NE)
{
MessageBox.Show ("srinivas akella");
}
}
private void OnRegChangeEven t(IRTCRegistrat ionStateChangeE vent regEvent)
{
RTC_REGISTRATIO N_STATE regState;
regState = regEvent.State;
switch (regState)
{
case RTC_REGISTRATIO N_STATE.RTCRS_R EGISTERING:
MessageBox.Show ("RTCRS_REGISTE RING");
break;
case RTC_REGISTRATIO N_STATE.RTCRS_R EGISTERED:
MessageBox.Show ("RTCRS_REGISTE RED");
break;
case RTC_REGISTRATIO N_STATE.RTCRS_L OGGED_OFF:
MessageBox.Show ("RTCRS_LOGGED_ OFF");
break;
case RTC_REGISTRATIO N_STATE.RTCRS_E RROR:
MessageBox.Show ("RTCRS_ERROR") ;
break;
}
}
private void OnProfileEvent( IRTCProfileEven t2 pEvent)
{
if(pEvent.Event Type == RTC_PROFILE_EVE NT_TYPE.RTCPFET _PROFILE_GET)
{
if (pEvent.StatusC ode == 0)
{
MessageBox.Show ("1");
userprofile = (IRTCProfile)pE vent.Profile;
presence.Enable PresenceEx(user profile, "bb", 0);
presence.SetLoc alPresenceInfo( RTC_PRESENCE_ST ATUS.RTCXS_PRES ENCE_ONLINE, null);
userCreation.En ableProfileEx(u serprofile, 0x0000000F, 0x0000000F);
MessageBox.Show ("1");
}
}
}
void OnIRTCIMEvent(I RTCMessagingEve nt IMEvent)
{
if (IMEvent.EventT ype == RTC_MESSAGING_E VENT_TYPE.RTCMS ET_MESSAGE)
{
string messageReceived FromUserUri = IMEvent.Partici pant.UserURI;
string messageHeader =IMEvent.Messag eHeader;
string message = IMEvent.Message ;
MessageBox.Show (messageReceive dFromUserUri + " : " + message);
}
}
void OnIRTCSessionSt ateChangeEvent( IRTCSessionStat eChangeEvent sessionevent)
{
RTC_SESSION_STA TE sessionState;
sessionState = sessionevent.St ate;
switch (sessionState)
{
case RTC_SESSION_STA TE.RTCSS_IDLE:
textBox3.Text = "Session is IDLE";
break;
case RTC_SESSION_STA TE.RTCSS_INCOMI NG:
textBox3.Text = "Session is INCOMING";
//Play a ring on the local PC to alert user of incoming call.
objRTC.PlayRing (RTC_RING_TYPE. RTCRT_PHONE, true);
//Get the incoming session.
objSession = sessionevent.Se ssion;
objSession.Answ er();
break;
case RTC_SESSION_STA TE.RTCSS_ANSWER ING:
textBox3.Text = "Session is ANSWERING";
// Stop the ringing
objRTC.PlayRing (RTC_RING_TYPE. RTCRT_PHONE, false);
break;
case RTC_SESSION_STA TE.RTCSS_INPROG RESS:
textBox3.Text = "Session is INPROGRESS";
break;
case RTC_SESSION_STA TE.RTCSS_CONNEC TED:
textBox3.Text = "Session is CONNECTED";
break;
case RTC_SESSION_STA TE.RTCSS_DISCON NECTED:
textBox3.Text = "Session is DISCONNECTED";
objSession = null;
break;
}
}
void OnIRTCMediaEven t(IRTCMediaEven t mediaEvent)
{
RTC_MEDIA_EVENT _TYPE mediaType;
IVideoWindow videoWindow = null;
mediaType = mediaEvent.Even tType;
switch (mediaType)
{
case RTC_MEDIA_EVENT _TYPE.RTCMET_ST ARTED:
{
videoWindow = objRTC.get_IVid eoWindow(RTC_VI DEO_DEVICE.RTCV D_RECEIVE);
videoWindow.Set WindowPosition( 100, 100, 400, 400);
videoWindow.Vis ible = 1;
textBox4.Text = "Video Window is Openend";
break;
}
case RTC_MEDIA_EVENT _TYPE.RTCMET_FA ILED:
{
textBox4.Text = "Video Session is failed";
break;
}
case RTC_MEDIA_EVENT _TYPE.RTCMET_ST OPPED:
{
textBox4.Text = "Video Session is closed";
videoWindow.Vis ible = 0;
videoWindow = null;
break;
}
}
}
RTCClientClass objRTC = new RTCClientClass( );
IRTCSession objSession;
private void Connect_Click(o bject sender, EventArgs e)
{
userCreation = _rtc;
presence = _rtc;
_rtc.Initialize ();
_rtc.SetPreferr edMediaTypes(0x 0000001F, true);
_rtc.EventFilte r = 0x00000080 | 0x00000004 | 0x00000020 | 0x00000400 | 0x00000002;
_rtc.IRTCEventN otification_Eve nt_Event += new IRTCEventNotifi cation_EventEve ntHandler(RTC_I RTCEventNotific ation_Event_Eve nt);
_rtc.ListenForI ncomingSessions = RTC_LISTEN_MODE .RTCLM_BOTH;
userCreation.Ge tProfile(null, null, "172.25.218.48" , "172.25.218 .1", 4, 0);
MessageBox.Show ("Over");
}
private void CreateSession_C lick(object sender, EventArgs e)
{
_session = _rtc.CreateSess ion(RTC_SESSION _TYPE.RTCST_PC_ TO_PC, null, userprofile, 0x00000001);
_session.AddPar ticipant("172.2 5.218.144", "srinivas") ;
}
}
}
what could be the problem in registering the profile with the server.
how to register for a server if IP addresses are used for peer-peer communication.
I would be greatful to u if u provide any pointers.