DNS 도메인으로 SIP 서버에 연결하는 방법

svs

iOS에서 VOIP 애플리케이션을 개발 중이므로 PjSip 라이브러리를 사용하고 있습니다. 단일 서버를 의미하는 일반 IP 또는 도메인 주소로 성공적으로 연결하고 전화를 걸고 받고 있습니다. 현재 두 대의 서버를 사용하여 DNS (Domain Name System)로 연결을 시도 할 때 오류가 발생합니다. 누구든지이 문제를 해결하고 DNS에 연결하는 방법에 대한 샘플 코드를 제공하는 데 도움이 될 수 있습니까? 내가 시도한 코드는 다음과 같습니다.

 char dns = "sample.com";
 while (anObject = [enumerator nextObject])
 {
   NSMutableString *mutableStr = [anObject mutableCopy];
   CFStringTrimWhitespace((CFMutableStringRef)mutableStr);
   srv = [mutableStr UTF8String];
   if (srv && strlen(srv))
   {

      if (app_config->cfg.nameserver_count==PJ_ARRAY_SIZE(app_config->cfg.nameserver))
      {
         PJ_LOG(1,(THIS_FILE, "Error: too many DNS servers"));
         [mutableStr release];
         break;
      }
      for (i=0; i<app_config->cfg.nameserver_count; ++i) {
          pj_ansi_sprintf(line, "--nameserver %.*s\n",(int)app_config->cfg.nameserver[i].slen,app_config->cfg.nameserver[i].ptr);
      }
      pj_strdup2_with_null(app_config->pool, &(app_config->cfg.nameserver[app_config->cfg.nameserver_count++]), srv);
  }
  [mutableStr release];
}

/* Initialize pjsua */
status = pjsua_init(&app_config->cfg, &app_config->log_cfg, &app_config->media_cfg);
uname  = "2000";
authname  = [[[NSUserDefaults standardUserDefaults] stringForKey:@"authname"] UTF8String];
passwd = "abcdef";
sipServer = "sample.com";
pjsua_acc_config_default(&acc_cfg);
acc_cfg.use_rfc5626 = PJ_FALSE;
// ID
acc_cfg.id.ptr = (char*) pj_pool_alloc(/*app_config.*/pool, PJSIP_MAX_URL_SIZE);
if (contactname && strlen(contactname))
  acc_cfg.id.slen = pj_ansi_snprintf(acc_cfg.id.ptr, PJSIP_MAX_URL_SIZE, 
                                   "\"%s\"<sip:%s@%s>", contactname, uname, sipServer);
else
  acc_cfg.id.slen = pj_ansi_snprintf(acc_cfg.id.ptr, PJSIP_MAX_URL_SIZE, 
                                   "sip:%s@%s;transport=tcp;hide", uname, sipServer);
if ((status = pjsua_verify_sip_url(acc_cfg.id.ptr)) != 0) 
{
   PJ_LOG(1,(THIS_FILE, "Error: invalid SIP URL '%s' in local id argument", 
  acc_cfg.id));
  return status;
}
acc_cfg.reg_uri.ptr = (char*) pj_pool_alloc(/*app_config.*/pool,
PJSIP_MAX_URL_SIZE);
acc_cfg.reg_uri.slen = pj_ansi_snprintf(acc_cfg.reg_uri.ptr, 
PJSIP_MAX_URL_SIZE, "sip:%s;transport=tcp;hide", sipServer);
if ((status = pjsua_verify_sip_url(acc_cfg.reg_uri.ptr)) != 0) 
{
   PJ_LOG(1,(THIS_FILE,  "Error: invalid SIP URL '%s' in registrar argument",
  acc_cfg.reg_uri));
   return status;
}

acc_cfg.cred_count = 1;
acc_cfg.cred_info[0].scheme = pj_str("Digest");
acc_cfg.cred_info[0].realm = pj_str("*");//pj_str(realm);
if (authname && strlen(authname))
  acc_cfg.cred_info[0].username = pj_str((char *)authname);
else
  acc_cfg.cred_info[0].username = pj_str((char *)uname);
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"enableMJ"])
   acc_cfg.cred_info[0].data_type = PJSIP_CRED_DATA_DIGEST;
else
  acc_cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
acc_cfg.cred_info[0].data = pj_str((char *)passwd);
acc_cfg.publish_enabled = PJ_TRUE;
#if defined(MWI) && MWI==1
  acc_cfg.mwi_enabled = PJ_TRUE;
#endif
acc_cfg.allow_contact_rewrite = [[NSUserDefaults standardUserDefaults] boolForKey:@"enableNat"];
acc_cfg.reg_retry_interval = 300;
acc_cfg.reg_timeout = 3600;
if (acc_cfg.reg_timeout < 1 || acc_cfg.reg_timeout > 3600)
{
   PJ_LOG(1,(THIS_FILE, "Error: invalid value for timeout (expecting 1-3600)"));
   return PJ_EINVAL;
}
acc_cfg.ka_interval = 40;
status = pjsua_acc_add(&acc_cfg, PJ_TRUE, acc_id);

다음은 콘솔에서받는 응답입니다.

2016-07-28 10:12:29.899 MYApp[266:39854] granted
2016-07-28 10:12:29.904 MYApp[266:39854] -[Reachability isReachableViaWiFi] (632)
Reachability Flags: -R -------
10:12:31.842 os_core_unix.c !pjlib 2.3 for POSIX initialized
10:12:31.848 sip_endpoint.c  .Creating endpoint instance...
10:12:31.851          pjlib  .select() I/O Queue created (0x17a75f34)
10:12:31.852 sip_endpoint.c  .Module "mod-msg-print" registered
10:12:31.852 sip_transport.  .Transport manager created.
10:12:31.852   pjsua_core.c  .PJSUA state changed: NULL --> CREATED
2016-07-28 10:12:31.856 MYApp[266:39854] RESOLVED 0:<192.168.0.1>
2016-07-28 10:12:31.856 MYApp[266:39854] RESOLVED 1:<192.168.0.2>
10:12:37.822 sip_endpoint.c  .Module "mod-pjsua-log" registered
10:12:37.826   pjsua_core.c  .Nameserver sample.com added
10:12:37.826 sip_endpoint.c  .Module "mod-tsx-layer" registered
10:12:37.826 sip_endpoint.c  .Module "mod-stateful-util" registered
10:12:37.826 sip_endpoint.c  .Module "mod-ua" registered
10:12:37.826 sip_endpoint.c  .Module "mod-100rel" registered
10:12:37.826 sip_endpoint.c  .Module "mod-pjsua" registered
10:12:37.827 sip_endpoint.c  .Module "mod-invite" registered
10:12:37.871 coreaudio_dev.  .. dev_id 0: iPhone IO device  (in=1, out=1) 8000Hz
10:12:37.871 coreaudio_dev.  ..core audio initialized
10:12:37.871          pjlib  ..select() I/O Queue created (0x17a79214)
10:12:37.901 sip_endpoint.c  .Module "mod-evsub" registered
10:12:37.901 sip_endpoint.c  .Module "mod-presence" registered
10:12:37.901 sip_endpoint.c  .Module "mod-mwi" registered
10:12:37.901 sip_endpoint.c  .Module "mod-refer" registered
10:12:37.901 sip_endpoint.c  .Module "mod-pjsua-pres" registered
10:12:37.901 sip_endpoint.c  .Module "mod-pjsua-im" registered
10:12:37.901 sip_endpoint.c  .Module "mod-pjsua-options" registered
10:12:37.901   pjsua_core.c  .1 SIP worker threads created
10:12:37.901   pjsua_core.c  .pjsua version 2.3 for  initialized
10:12:37.901   pjsua_core.c  .PJSUA state changed: CREATED --> INIT
10:12:37.903   pjsua_core.c  SIP UDP socket reachable at 192.168.1.55:5060
10:12:37.903  udp0x17a80200  SIP UDP transport started, published address is 192.168.1.55:5060
10:12:37.904    tcplis:5060  SIP TCP listener ready for incoming connections at 192.168.1.55:5060
10:12:37.904   tcplis:49851  SIP TCP listener ready for incoming connections at fe80::186d:af8f:4693:2b3d:49851
10:12:37.905   pjsua_core.c  SIP UDP socket reachable at fe80::186d:af8f:4693:2b3d:50425
10:12:37.905 udpv60x1824be0  SIP UDP IPv6 transport started, published address is [fe80::186d:af8f:4693:2b3d]:50425
10:12:37.905   pjsua_core.c  PJSUA state changed: INIT --> STARTING
10:12:37.905 sip_endpoint.c  .Module "mod-unsolicited-mwi" registered
10:12:37.905   pjsua_core.c  .PJSUA state changed: STARTING --> RUNNING
2016-07-28 10:12:43.307 MYApp[266:39854] There IS internet connection
10:12:43.308    pjsua_acc.c  Adding account: id=sip:[email protected];transport=tcp;hide
10:12:43.308    pjsua_acc.c  .Account sip:[email protected];transport=tcp;hide added with id 0
10:12:43.308    pjsua_acc.c  .Acc 0: setting registration..
10:12:43.308    pjsua_acc.c  ..Warning: cannot use source TCP/TLS socket address for Contact when nameserver is configured.
10:12:43.309    pjsua_acc.c  ..Warning: cannot use source TCP/TLS socket address for Contact when nameserver is configured.
10:12:43.309     resolver.c  ...Transmitting 38 bytes to NS 0 (192.168.0.1:53): DNS SRV query for _sip._tcp.sample.com: Success
10:12:43.309    pjsua_acc.c  ..Acc 0: Registration sent
10:12:45.311     resolver.c !Re-transmitting 38 bytes to NS 0 (192.168.0.1:53): DNS SRV query for _sip._tcp.sample.com: Success
10:12:47.311     resolver.c  Re-transmitting 38 bytes to NS 0 (192.168.0.1:53): DNS SRV query for _sip._tcp.sample.com: Success
10:12:49.311     resolver.c  Re-transmitting 38 bytes to NS 0 (192.168.0.1:53): DNS SRV query for _sip._tcp.sample.com: Success
10:12:51.313     resolver.c  Re-transmitting 38 bytes to NS 0 (192.168.0.1:53): DNS SRV query for _sip._tcp.sample.com: Success
10:12:53.313 _sip._tcp.samp  DNS SRV resolution failed for _sip._tcp.sample.com: Operation timed out (PJ_ETIMEDOUT)
10:12:53.313 _sip._tcp.samp  DNS SRV resolution failed for _sip._tcp.sample.com, trying resolving A record for vabsys.com
10:12:53.314     resolver.c  Transmitting 28 bytes to NS 0 (192.168.0.1:53): DNS A query for vabsys.com: Success
10:12:55.314     resolver.c  Re-transmitting 28 bytes to NS 0 (192.168.0.1:53): DNS A query for vabsys.com: Success
10:12:57.315     resolver.c  Error transmitting request: No working DNS nameserver (PJLIB_UTIL_EDNSNOWORKINGNS)
10:12:57.315 _sip._tcp.samp  DNS A record resolution failed: Operation timed out (PJ_ETIMEDOUT)
10:12:57.315  sip_resolve.c  DNS A record resolution failed: Operation timed out (PJ_ETIMEDOUT)
10:12:57.315  tsx0x17a87664  Failed to send Request msg REGISTER/cseq=27562 (tdta0x18252000)! err=70009 (Operation timed out (PJ_ETIMEDOUT))
10:12:57.315    pjsua_acc.c  ..SIP registration failed, status=503 (Operation timed out (PJ_ETIMEDOUT))
10:12:57.315    pjsua_acc.c  ..Scheduling re-registration retry for acc 0 in 0 seconds..
2016-07-28 10:12:57.316 MYApp[266:39945] Status changed acc 0 Service Unavailable (503)
10:12:57.318    pjsua_acc.c !Deleting account 0..
10:12:57.319    pjsua_acc.c  .Account id 0 deleted
10:12:57.319   pjsua_core.c  Shutting down, flags=0...
10:12:57.319   pjsua_core.c  PJSUA state changed: RUNNING --> CLOSING
10:12:57.325   pjsua_call.c  .Hangup all calls..
10:12:57.325  pjsua_media.c  .Call 0: deinitializing media..
10:12:57.325  pjsua_media.c  .Call 1: deinitializing media..
10:12:57.325  pjsua_media.c  .Call 2: deinitializing media..
10:12:57.325  pjsua_media.c  .Call 3: deinitializing media..
10:12:57.325   pjsua_pres.c  .Shutting down presence..
10:12:58.326   pjsua_core.c  .Destroying...
10:12:58.326  pjsua_media.c  .Shutting down media..
10:12:58.440 sip_transactio  .Stopping transaction layer module
10:12:58.440 sip_transactio  .Stopped transaction layer module
10:12:58.440 sip_endpoint.c  .Module "mod-unsolicited-mwi" unregistered
10:12:58.440 sip_endpoint.c  .Module "mod-pjsua-options" unregistered
10:12:58.440 sip_endpoint.c  .Module "mod-pjsua-im" unregistered
10:12:58.440 sip_endpoint.c  .Module "mod-pjsua-pres" unregistered
10:12:58.440 sip_endpoint.c  .Module "mod-pjsua" unregistered
10:12:58.440 sip_endpoint.c  .Module "mod-stateful-util" unregistered
10:12:58.440 sip_endpoint.c  .Module "mod-refer" unregistered
10:12:58.440 sip_endpoint.c  .Module "mod-mwi" unregistered
10:12:58.440 sip_endpoint.c  .Module "mod-presence" unregistered
10:12:58.441 sip_endpoint.c  .Module "mod-evsub" unregistered
10:12:58.441 sip_endpoint.c  .Module "mod-invite" unregistered
10:12:58.441 sip_endpoint.c  .Module "mod-100rel" unregistered
10:12:58.441 sip_endpoint.c  .Module "mod-ua" unregistered
10:12:58.441 sip_transactio  .Transaction layer module destroyed
10:12:58.441 sip_endpoint.c  .Module "mod-tsx-layer" unregistered
10:12:58.441 sip_endpoint.c  .Module "mod-msg-print" unregistered
10:12:58.441 sip_endpoint.c  .Module "mod-pjsua-log" unregistered
10:12:58.444    tcplis:5060  .SIP TCP listener destroyed

10:12:58.445   tcplis:49851  .SIP TCP listener destroyed


10:12:58.445 sip_endpoint.c  .Endpoint 0x17a75864 destroyed


10:12:58.445   pjsua_core.c  .PJSUA state changed: CLOSING --> NULL



10:12:58.445   pjsua_core.c  .PJSUA destroyed...

DNS 연결 방법을 도와주세요. 미리 감사드립니다.

svs

위의 코드가 작동하고 이름 서버에 연결하는 문제가 수정되었습니다. 문제는 서버 측에서만 발생했습니다. 이제 양쪽 모두 잘 작동합니다. 소중한 시간을 내 주셔서 감사합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

특정 도메인에 로컬 DNS 서버를 사용하고 다른 모든 도메인에 DHCP 할당 DNS를 사용하는 방법

분류에서Dev

한 하위 도메인에서 다른 하위 도메인으로 Linux DNS 서버 지정

분류에서Dev

독립적으로 다른 DNS 도메인에있는 포트 전달 서버

분류에서Dev

로컬 도메인을 확인하기 위해 로컬 DNS 서버를 사용하고 원격 도메인에 대해 원격 DNS 서버를 사용하도록 systemd-resolved 및 systemd-networkd를 구성하는 방법은 무엇입니까?

분류에서Dev

도메인 이름으로 연결된 모든 서버를 차단하는 방법

분류에서Dev

로컬 DNS로 여러 서버에 액세스하는 방법

분류에서Dev

Indy Client에서 서버로 연결을 시도하는 방법

분류에서Dev

도메인 간 서버에 주기적으로 AJAX를 호출하는 방법

분류에서Dev

Java에서 모든 SIP 통화에 자동으로 응답하는 방법

분류에서Dev

클라이언트와 서버 간의 .c 프로그래밍에서 SIP 세션을 설정하는 방법

분류에서Dev

Weblogic 도메인에서 디버그 모드로 서버를 시작하고 NetBeans에서 디버거를 연결하는 방법은 무엇입니까?

분류에서Dev

Node.js에서 DNS 서버 변경을 확인하는 방법

분류에서Dev

SIP를 통해 하나의 Twilio 애플리케이션 인스턴스를 다른 인스턴스에 연결하는 방법은 무엇입니까?

분류에서Dev

Windows XP Embedded 및 Windows 7 (도메인)에 연결하는 방법

분류에서Dev

도메인 이름을 사용하여 ssh를 통해 Linux 서버에 연결하는 방법

분류에서Dev

GUI를 사용하여 Ubuntu 16.04에서 도메인 인증으로 Samba SMB2 / SMB3에 연결하는 방법은 무엇입니까?

분류에서Dev

각 연결에서 발생하는 역방향 DNS PTR 조회

분류에서Dev

C # innosetup으로 프로그램 exe를 만든 후 SQL 인증으로 SQL 서버에 연결하는 방법

분류에서Dev

C # innosetup으로 프로그램 exe를 만든 후 SQL 인증으로 SQL 서버에 연결하는 방법

분류에서Dev

도메인 등록 기관이 루트 DNS 서버를 업데이트하는 방법

분류에서Dev

라우터를 DNS 서버로 사용하는 방법?

분류에서Dev

다른 서버에서 Google Cloud SQL 인스턴스에 연결하는 방법

분류에서Dev

Ubuntu 20.04에서 DNS 서버를 영구적으로 변경하는 방법은 무엇입니까?

분류에서Dev

내 DNS 레코드를 다른 도메인으로 멀리 설정하는 방법은 무엇입니까?

분류에서Dev

Virtualbox Ubuntu에서 OS로 SSH를 통해 서버에 연결하는 방법

분류에서Dev

DHCP에서 오는 DNS 서버를 무시하는 방법

분류에서Dev

IP에서 자신의 도메인 이름을 만들고 DNS 서버와 매핑 / 동기화하는 방법은 무엇입니까?

분류에서Dev

Java 인증으로 Cassandra 5.1에 연결하는 방법

분류에서Dev

nginx 구성에서 도메인과 하위 도메인을 모두 동적으로 루트하는 방법

Related 관련 기사

  1. 1

    특정 도메인에 로컬 DNS 서버를 사용하고 다른 모든 도메인에 DHCP 할당 DNS를 사용하는 방법

  2. 2

    한 하위 도메인에서 다른 하위 도메인으로 Linux DNS 서버 지정

  3. 3

    독립적으로 다른 DNS 도메인에있는 포트 전달 서버

  4. 4

    로컬 도메인을 확인하기 위해 로컬 DNS 서버를 사용하고 원격 도메인에 대해 원격 DNS 서버를 사용하도록 systemd-resolved 및 systemd-networkd를 구성하는 방법은 무엇입니까?

  5. 5

    도메인 이름으로 연결된 모든 서버를 차단하는 방법

  6. 6

    로컬 DNS로 여러 서버에 액세스하는 방법

  7. 7

    Indy Client에서 서버로 연결을 시도하는 방법

  8. 8

    도메인 간 서버에 주기적으로 AJAX를 호출하는 방법

  9. 9

    Java에서 모든 SIP 통화에 자동으로 응답하는 방법

  10. 10

    클라이언트와 서버 간의 .c 프로그래밍에서 SIP 세션을 설정하는 방법

  11. 11

    Weblogic 도메인에서 디버그 모드로 서버를 시작하고 NetBeans에서 디버거를 연결하는 방법은 무엇입니까?

  12. 12

    Node.js에서 DNS 서버 변경을 확인하는 방법

  13. 13

    SIP를 통해 하나의 Twilio 애플리케이션 인스턴스를 다른 인스턴스에 연결하는 방법은 무엇입니까?

  14. 14

    Windows XP Embedded 및 Windows 7 (도메인)에 연결하는 방법

  15. 15

    도메인 이름을 사용하여 ssh를 통해 Linux 서버에 연결하는 방법

  16. 16

    GUI를 사용하여 Ubuntu 16.04에서 도메인 인증으로 Samba SMB2 / SMB3에 연결하는 방법은 무엇입니까?

  17. 17

    각 연결에서 발생하는 역방향 DNS PTR 조회

  18. 18

    C # innosetup으로 프로그램 exe를 만든 후 SQL 인증으로 SQL 서버에 연결하는 방법

  19. 19

    C # innosetup으로 프로그램 exe를 만든 후 SQL 인증으로 SQL 서버에 연결하는 방법

  20. 20

    도메인 등록 기관이 루트 DNS 서버를 업데이트하는 방법

  21. 21

    라우터를 DNS 서버로 사용하는 방법?

  22. 22

    다른 서버에서 Google Cloud SQL 인스턴스에 연결하는 방법

  23. 23

    Ubuntu 20.04에서 DNS 서버를 영구적으로 변경하는 방법은 무엇입니까?

  24. 24

    내 DNS 레코드를 다른 도메인으로 멀리 설정하는 방법은 무엇입니까?

  25. 25

    Virtualbox Ubuntu에서 OS로 SSH를 통해 서버에 연결하는 방법

  26. 26

    DHCP에서 오는 DNS 서버를 무시하는 방법

  27. 27

    IP에서 자신의 도메인 이름을 만들고 DNS 서버와 매핑 / 동기화하는 방법은 무엇입니까?

  28. 28

    Java 인증으로 Cassandra 5.1에 연결하는 방법

  29. 29

    nginx 구성에서 도메인과 하위 도메인을 모두 동적으로 루트하는 방법

뜨겁다태그

보관