'XMPP'에 해당되는 글 2건

  1. 2011.04.21 304.libjingle 빌드 시즌2
  2. 2011.04.21 XMPP

304.libjingle 빌드 시즌2

 

빌드 로그#
  • 프로젝트 생성 및 파일 추가
  • DEFINE 분석 및 적용
  • 오류제거

    • 헤더 경로 오류

      • #include "third_party/expat/v2_0_1/Source/lib/expat.h"
      • #include "third_party/libsrtp/include/srtp.h"
      • 추가 포함 디렉토리 설정 후 아래 옵션 추가
      • EXPAT_RELATIVE_PATH
      • SRTP_RELATIVE_PATH
    • fatal error C1083: 포함 파일을 열 수 없습니다. 'linux/types.h': No such file or directory

      • v4llookup.cc 제거
    • error C3861: 'waveInGetNumDevs': 식별자를 찾을 수 없습니다.

      • #include <mmsystem.h> 추가
    • error C4430: 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다.

      • #include "talk/base/win32.h"
        #include "talk/base/winfirewall.h"
      • win32를 먼저 참조할 수 있도록 winfirewall.cc 수정
    • fatal error C1083: 포함 파일을 열 수 없습니다. 'unistd.h': No such file or directory

      • unixfilesystem.cc 제거
    • openssl 사용

      • SSL_USE_OPENSSL 전처리기 추가
      • openssl 다운로드 및 third_party에 압축 해제 : http://www.openssl.org/source/
      • third_party\openssl-1.0.0d\inc32 참조 추가 <-- 아래 openssl을 빌드해야 생성

        • openssl 빌드

          • INSTALL.W32 참조
          • win32용 perl 다운로드 및 설치 : http://www.perl.org/get.html#win32
          • > perl Configure VC-WIN32 no-asm --prefix=D:\프로젝트\XMPP\LiveJingle\talk\third_party\openssl-1.0.0d/dir

            • masm 사용하지 않음 옵션
          • > ms\do_ms
          • > nmake -f ms\ntdll.mak
          • > nmake -f ms\ntdll.mak test
    • c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(91) : warning C4005: 'AF_IPX' : 매크로 재정의

      • opensslidentity.cc 최상단에 추가
      1. #ifdef WIN32
        #include "talk/base/win32.h"
        #endif
    • fatal error C1083: 포함 파일을 열 수 없습니다. 'CoreFoundation/CoreFoundation.h': No such file or directory

      • macutils.cc 제거
    • relayserver_main.cc, stunserver_main.cc 제거
    • openssladpter.cc
    1. // gobuksun
      #ifdef WIN32
      static DWORD id_function() {
        return GetCurrentThreadId();
      }
      #else
      static pthread_t id_function() {
        return THREAD_ID;
      }
      #endif
    1. // gobuksun
      const std::string NS_GINGLE_RAW("http://www.google.com/transport/p2p");
      const buzz::QName QN_GINGLE_RAW_CHANNEL(true, NS_GINGLE_RAW, "raw-channel");

 

  • latebindingsymboltable.cc, libudevsymboltable.cc 제거
  •  

 

전처리 선언 및 포함 라이브러리 정의#
  1. DEBUG;_DEBUG;WIN32_LEAN_AND_MEAN;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;NO_ATL;_ATL_CSTRING_EXPLICIT_CONSTRUCTORS;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_USE_32BIT_TIME_T;_UNICODE;UNICODE;_HAS_EXCEPTIONS;WIN32;WINVER=0x0500;_WIN32_WINNT=0x0501;_WIN32_IE=0x0501;NTDDI_VERSION=NTDDI_WINXP;_WINDOWS;FEATURE_ENABLE_SSL;FEATURE_ENABLE_VOICEMAIL;FEATURE_ENABLE_PSTN;HAVE_SRTP;EXPAT_RELATIVE_PATH;SRTP_RELATIVE_PATH;SSL_USE_OPENSSL;

 

  1. wininet.lib Iphlpapi.lib secur32.lib ws2_32.lib crypt32.lib strmiids.lib winmm.lib libexpat.lib srtp.lib libeay32.lib ssleay32.lib

 

빌드된 libjingle 소스 파일#
  • talk.zip  : 파일 크기 문제로 중간파일, 실행파일 등은 최소한으로 줄였음.

 

느낀점 및 TODO#
  • 로그인만 해보고 아직 통화를 못해봤음.
  • 프로그램이 종료되면서 스레드 언로드하면서 프로그램이 죽는 버그가 있음.
  • 할일이 많아 보인다. ㅡㅡ;

 

 

이 글은 스프링노트에서 작성되었습니다.

XMPP

 xmpp.PNG  XMPP(Extensible Messaging and Presence Protocol)

 

XMPP는 무엇인가요 ?

  • XMPP는 XML 기반 인터넷 통신을 위한 오픈 프로토콜로써 인터넷상의 두 지점 간 통신 규격에 관한 것입니다.

  • 두 지점은 이메일주소와 같은 방식으로 표현되며, 이들 지점 간 확장 가능한 메시지(message) 그리고 프레즌스(presence)를 거의 실시간(near-realtime)으로 전달해주는 규격입니다.

  • 이 규격에 의하면 인터넷상의 지점은 DNS(Domain Name Service) 서비스에 의해 명명될 수 있는 위치들 간의 통신으로 예를 들어 yourhost.com 이라는 주소도 하나의 지점이며 yourid@yourhost.com 또한 하나의 주소가 됩니다.

  • 결국 DNS에 의해 표현될 수 있는 주소 공간은 새로이 등록되는 도메인 이름에 의해서 계속해서 증가하므로 이론상 무한대의 사용자가 서로 통신이 가능하게 되는 규격인 셈이 됩니다.

  • 확장 가능한 프로토콜인 XMPP는 다양한 엔드 포인트 프로토콜 간의 보편적인 연결을 제공하는 이상적인 백본 프로토콜입니다.  XMPP 게이트웨이를 사용하면 지정된 클라이언트-투-서버 세션을 종료하고 대상 엔드 포인트 프로토콜에 대한 새 세션을 필요한 프로토콜 변환과 함께 시작할 수 있습니다.  이 의미는 서로 다른 프로토콜을 지원하는 시스템간에 확장정의를 통해 통신이 가능해진다는것을 의미합니다.
    xmpp_ex.JPG

 

 

누가 사용하나요 ?

  •  Psi is a free instant messaging application designed for the Jabber IM network (including Google Talk). Fast and lightweight, Psi is fully open-source and compatible with Windows, Linux, and Mac OS X

  • Pidgin, the universal chat client.

  • gtalk : 구글 메신저, GMail 에서의 채팅

  • openfire, spark : 완성도 높은 JAVA 기반의 XMPP 서버 및 클라이언트

  • facebook chat

  • adium : 맥 유저에게 익숙한 메신저

  • 그 외 http://xmpp.org/xmpp-software/clients/ 참조

 

 

XMPP에 대해 더 자세한 정보를 알고 싶어요.

 

 

 

이 글은 스프링노트에서 작성되었습니다.

prev 1 next