为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

网络电话注册

2017-10-27 15页 doc 36KB 33阅读

用户头像

is_721103

暂无简介

举报
网络电话注册网络电话注册 #include #include #include #include #include #include #include int myregister() { int i; #if 0 i = eXosip_init(); if (i != 0) { return -1; } printf("eXosip_init success\n"); i = eXosip_listen_addr(IPPROTO_UDP, NULL, 5060, AF_INET, 0);...
网络电话注册
网络电话注册 #include #include #include #include #include #include #include int myregister() { int i; #if 0 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"); #endif int flag=0; int id; osip_message_t *reg = NULL; eXosip_lock(); id = eXosip_register_build_initial_register ("sip:77001234@192.168.8.24", "sip:61.233.3.35:5060", 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\n", je->textinfo); break; } if(je->type == EXOSIP_REGISTRATION_FAILURE) { eXosip_add_authentication_info("77001234", "77001234","654987", NULL, NULL); } if(je->type == EXOSIP_REGISTRATION_REFRESHED) { printf("refreshed"); return 1; } } // eXosip_quit(); sleep(1); } 1. ?ÓÀûÓÃeXosipµÄ×??á?ªÊ? int i; char identity[50]; char registerer[50]; char localip[128]; static int flag = 0; int id; eXosip_guess_localip (AF_INET, localip, 128); sprintf(identity,"sip:%s@%s",username,localip); sprintf(registerer,"sip:%s:%s",ip_url,port); //?õÊ??? if( flag == 0) { i = eXosip_init(); if (i != 0) { return -1; } TRACE("eXosip_init success/n"); flag ++; 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; } TRACE("eXosip_listen_addr success/n"); } osip_message_t *reg = NULL; eXosip_lock(); id = eXosip_register_build_initial_register (identity,registerer, NULL, 1800, ®); printf("id = %d", id); if (id < 0) { eXosip_unlock(); fprintf (stderr, "eXosip_register_build_initial_register failed:(bad arguments?)/n"); return 0; } eXosip_lock(); i = eXosip_register_send_register(id, reg); if (i != 0) { fprintf (stderr, "eXosip_register_send_register failed: (bad arguments?)/n"); return 0; } eXosip_unlock (); TRACE("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) { TRACE("textinfo is %s/n", je->textinfo); return 1; break; } if(je->type == EXOSIP_REGISTRATION_FAILURE) { //×??áÊ??ÜÖ?ºó??ÔÙ?ÎÌá??ÊÚÈ?ÐÅÏ??? Ò??É?ÅÔÚÉÏÃæ eXosip_add_authentication_info(username, username,password, NULL, NULL); } if(je->type == EXOSIP_REGISTRATION_REFRESHED) { TRACE("refreshed"); return 0; } } eXosip_quit(); eXosip_guess_localip (AF_INET, localip, 128); Õâ?äÔÚeXosipÖеÄʵÏÖΪ eXosip_guess_localip (int family, char *address, int size) addressÔÚº?ÊýÌåÍâÊ×ÏÈ?øÐÐ??ÒåΪÒ?Êý×é???ÖÅäºÃ?Õ?ä??ÔÙ?øÐÎÊ??ÎÊý??Ö?Õë?ýÈ???ÔÚº?ÊýÌåÄÚ?Ôʵ?Ê?ÎÊýaddress??Öµ??ÕâÀï?ÍÊÇ??µØµÄipµØÖ??? ?Î?ûeXosip_guess_localip µÄʵÏÖ int eXosip_guess_ip_for_via (int family, char *address, int size) { SOCKET sock; SOCKADDR_STORAGE local_addr; int local_addr_len; struct addrinfo *addrf; address[0] = '\0'; sock = socket (family, SOCK_DGRAM, 0); if (family == AF_INET) { getaddrinfo (eXosip.ipv4_for_gateway, NULL, NULL, &addrf); } else if (family == AF_INET6) { getaddrinfo (eXosip.ipv6_for_gateway, NULL, NULL, &addrf); } if (addrf == NULL) { closesocket (sock); snprintf (address, size, (family == AF_INET) ? "127.0.0.1" : "::1"); return OSIP_NO_NETWORK; } if (WSAIoctl (sock, SIO_ROUTING_INTERFACE_QUERY, addrf->ai_addr, addrf->ai_addrlen, &local_addr, sizeof (local_addr), &local_addr_len, NULL, NULL) != 0) { closesocket (sock); freeaddrinfo (addrf); snprintf (address, size, (family == AF_INET) ? "127.0.0.1" : "::1"); return OSIP_NO_NETWORK; } closesocket (sock); freeaddrinfo (addrf); if (getnameinfo ((const struct sockaddr *) &local_addr, local_addr_len, address, size, NULL, 0, NI_NUMERICHOST)) { snprintf (address, size, (family == AF_INET) ? "127.0.0.1" : "::1"); return OSIP_NO_NETWORK; } return OSIP_SUCCESS; } Í??ýdebugÑéÖ?ºÍ?áºÏeXosipµÄcode??ÕâÀïµÃµ?µÄµØÖ?Ϊ???صØÖ?127.0.0.1.??ÖªµÀµÃµ?Õâ?öµØÖ?ÓÐÊ?Ã?ÓÃ?? ÏÂÒ???ÊÇeXosip_init() eXosip_init()µÄÔ?codeÈçÏÂ?º eXosip_init (void) { osip_t *osip; int i; memset (&eXosip, 0, sizeof (eXosip)); snprintf (eXosip.ipv4_for_gateway, 256, "%s", "217.12.3.11"); snprintf (eXosip.ipv6_for_gateway, 256, "%s", "2001:638:500:101:2e0:81ff:fe24:37c6"); #ifndef MINISIZE snprintf (eXosip.event_package, 256, "%s", "dialog"); #endif #ifdef WIN32 { WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD (1, 1); i = WSAStartup (wVersionRequested, &wsaData); if (i != 0) { OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_WARNING, NULL, "eXosip: Unable to initialize WINSOCK, reason: %d\n", i)); } } #endif eXosip.user_agent = osip_strdup ("eXosip/" EXOSIP_VERSION); if (eXosip.user_agent == NULL) return OSIP_NOMEM; eXosip.j_calls = NULL; eXosip.j_stop_ua = 0; #ifdef OSIP_MT eXosip.j_thread = NULL; #endif i = osip_list_init (&eXosip.j_transactions); eXosip.j_reg = NULL; #ifdef OSIP_MT #if !defined (_WIN32_WCE) eXosip.j_cond = (struct osip_cond *) osip_cond_init (); if (eXosip.j_cond == NULL) { osip_free (eXosip.user_agent); eXosip.user_agent = NULL; return OSIP_NOMEM; } #endif eXosip.j_mutexlock = (struct osip_mutex *) osip_mutex_init (); if (eXosip.j_mutexlock == NULL) { osip_free (eXosip.user_agent); eXosip.user_agent = NULL; #if !defined (_WIN32_WCE) osip_cond_destroy ((struct osip_cond *) eXosip.j_cond); eXosip.j_cond = NULL; #endif return OSIP_NOMEM; } #endif i = osip_init (&osip); if (i != 0) { OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_ERROR, NULL, "eXosip: Cannot initialize osip!\n")); return i; } osip_set_application_context (osip, &eXosip); eXosip_set_callbacks (osip); eXosip.j_osip = osip; #ifdef OSIP_MT eXosip.j_socketctl = jpipe (); if (eXosip.j_socketctl == NULL) return OSIP_UNDEFINED_ERROR; eXosip.j_socketctl_event = jpipe (); if (eXosip.j_socketctl_event == NULL) return OSIP_UNDEFINED_ERROR; #endif eXosip.j_events = (osip_fifo_t *) osip_malloc (sizeof (osip_fifo_t)); if (eXosip.j_events == NULL) return OSIP_NOMEM; osip_fifo_init (eXosip.j_events); eXosip.use_rport = 1; eXosip.use_naptr = 1; eXosip.keep_alive = 17000; eXtl_udp.tl_init (); eXtl_tcp.tl_init (); #ifdef HAVE_OPENSSL_SSL_H #if !(OPENSSL_VERSION_NUMBER < 0x00908000L) eXtl_dtls.tl_init (); #endif eXtl_tls.tl_init (); #endif return OSIP_SUCCESS; } ??ÉÏÈ??úÂëºÜ?à??ÆäʵÖ?ÒªÊÇÅÐ?ϵĺêÌ??àÁË??Ò?????µÄÀíÇå?? eXosip ΪÈ??Ö?äÁ???ÀïÃæ??ÒåÁËÒ??ó?Ñ?äÁ??? ?Ó×Å?õÊ???eXosipµÄÁ??ö?ÉÔ??äÁ???µ?ÊÇ??ÖªµÀÕâÁ??ö?õÊ???µÄÖµÊÇ?ÓÄÄÀï À?µÄ ?ÓÏÂÀ???win32µÄ???Ö??ÊÇÓÃWSAStartup?ÔwindowsµÄÍøÂç???Ö?øÐÐ?õÊ????? ΪÁËÔÚÓ?ÓÃ?ÌÐòµ?Öе?ÓÃÈκÎÒ??öWinsock APIº?Êý??Ê×ÏȵÚÒ??þÊÂÇé?ÍÊÇ?ØÐëÍ??ýWSAStartupº?ÊýÍê?É?ÔWinsock?þÎñ µÄ?õÊ?????Òò?ËÐèÒªµ?ÓÃWSAStartupº?Êý??Ê?ÓÃSocketµÄ?ÌÐòÔÚÊ?ÓÃSocketÖ?Ç??ØÐëµ?ÓÃWSAStartupº?Êý?? ?ÓÏÂÀ??ÔeXosip?á??µÄuser_agent?øÐÐ?õÊ??????Ñ?ÎÊýµÄ×Ö?û????ÖÆ?øuser_agent??ÀïÃæµÄʵÏÖʵ?Ê?ÍÊÇ?ÖÅäÄÚ?æ??È?ºó?øÐÐstr????µÄ?Ù×??? eXosip.j_stop_ua = 0;Õâ?ö?äÁ??È?ÏÖØÒª??Í??ýÕâ?öÖµÅÐ?ÏÐ,ÒéÕ?ÊÇ?ñÒªÒ?Ö?ÔËÐÐ i = osip_list_init (&eXosip.j_transactions); ?õÊ?????ÓÃmemsetÉèÖÃΪ0 ?,?, ÔÚ?õÊ???ÍêeXosip?á??µÄÒ?Ð??äÁ?ºó???õÊ???osip?á?? i = osip_init (&osip); osip_set_application_context (osip, &eXosip); ÒÔÉÏÕâ?äºÜÓÐÒâË???ÔÚºÜ?àÇé?öÏÂ??ÎÒÃÇ?ÉÒÔÑ?Ï?Õâ?ö×ö??????eXosipµÄ?á??ÉèÖõ?osipÖÐ?øÐÐ???æ??È?ºóÒ??ß?áÓÐÒ??öosip_get_application????À?È??öÕâ?öeXosip?á????Ò??ÍÊÇ˵?ÉÒÔÔÚosipµÄ????ÖÐÈ??öexosip??µ?ÓÃexosipµÄ??Î??? eXosip_set_callbacks (osip); ÉèÖÃosipµÄ?ص?º?Êý??ÕâÀïºÜÖØÒª?? ?,?, eXtl_udp.tl_init (); eXtl_tcp.tl_init (); ÕâÁ??äÊÇ?ãÉçÃ?µÄ??(?Ôudp??tcpÁ??ö??Í?µÄsocket?øÐÐÒ?Ð??õÊ???µÄ??×???ÔÚºóÃæÍ??ýÅÐ?ÏÊÇÊ?ÓÃtcp??ÊÇudp??À??ÔÓ?openÄ??ösocket) ?ÓÏÂÀ? eXosip_listen_addr ?ù?Ýudp?òÕßtcp??openÉÏÎÄ??ÒåºÃµÄsocket?? eXosip_register_build_initial_register ????×??áÏûÏ??? eXosip_register_send_register ???ö×??áÏûÏ?
/
本文档为【网络电话注册】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索