- 论坛徽章:
- 0
|
用eXosip写个简单的注册程序,但一直不发sip包,清用过的高手帮忙看看!
#include <eXosip2/eXosip.h>
#include <osip2/osip_mt.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
int
main(int argc, char **argv)
{
int i;
i = eXosip_init();
if (i != 0)
{
return -1;
}
printf("eXosip_init success\n" ;
i = eXosip_listen_addr(IPPROTO_UDP, NULL, 5060, AF_INET, 0);
if (i != 0)
{
eXosip_quit();
fprintf(stderr, "could not initialize transport layer\n" ;
return -1;
}
printf("eXosip_listen_addr success\n" ;
int id;
osip_message_t *reg = NULL;
eXosip_lock();
id = eXosip_register_build_initial_register ("sip:6005@10.23.40.39", "sip:10.23.40.39", NULL, 1800, ®);
printf("id = %d", id);
if (id < 0)
{
eXosip_unlock();
fprintf (stderr, "eXosip_register_build_initial_register failed bad arguments?)\n" ;
exit(-1);
}
i = eXosip_register_send_register(id, reg);
if (i != 0)
{
fprintf (stderr, "eXosip_register_send_register failed: (bad arguments?)\n" ;
return -1;
}
eXosip_unlock ();
printf("eXosip_register_send_register OK\n" ;
eXosip_event_t *je;
for (;
{
je = eXosip_event_wait (0, 50);
eXosip_lock();
eXosip_automatic_action ();
eXosip_unlock();
if (je == NULL)
{
continue;
}
if (je->type == EXOSIP_REGISTRATION_SUCCESS)
{
printf("textinfo is %s", je->textinfo);
break;
}
}
eXosip_quit();
} |
|