제4장 통신 유형

본 장에서는 Tmax에서 지원하는 통신 유형에 대해 설명한다.

4.1. 개요

Tmax 시스템에서 응용 서버와 클라이언트 사이의 통신은 동기형 통신, 비동기형 통신, 대화형 통신의 3가지 유형으로 구분된다.

4.2. 동기형 통신

동기형 통신은 클라이언트가 서비스를 요청하고, 그 응답이 오거나 타임아웃이 될 때까지 기다린다. 서비스를 요청한 후 클라이언트는 블로킹(blocking) 상태로 응답을 기다린다.

[그림 4.1] 동기형 통신

동기형 통신


다음 그림은 동기형 통신을 사용하는 클라이언트/서버 프로그램의 동작 원리이다.

[그림 4.2] 동기형 통신 모델

동기형 통신 모델


참고

동기형 통신과 관련된 함수에 대한 자세한 설명은 “9.3. 동기형 통신”이나 "Tmax Reference Guide"를 참고한다.

4.3. 비동기형 통신

비동기형 통신은 클라이언트가 서비스를 요청하고 응답을 기다리지 않고 다른 일을 계속할 수 있다. 응답을 받을 때 해당 요청에 대한 응답을 받는다. 서비스를 요청하는 tpacall()은 호출할 때 즉시 반환되어 다른 서비스 요청을 처리할 수 있다. 하지만 응답을 받기 위해 호출하는 tpgetrply()는 응답이 도착하거나 타임아웃이 될 때까지 blocking 상태로 기다린다.

[그림 4.3] 비동기형 통신

비동기형 통신


다음 그림은 비동기형 통신을 사용하는 클라이언트/서버 프로그램의 동작원리이다.

[그림 4.4] 비동기형 통신 모델

비동기형 통신 모델

참고

비동기 통신과 관련된 함수에 대한 자세한 설명은 “9.4. 비동기형 통신”이나 "Tmax Reference Guide"를 참고한다.

4.4. 대화형 통신

대화형 통신은 클라이언트와 서버 간에 이루어지는 반이중 통신이다. 처음 대화형 모드로 접속할 때 대화 주도권을 설정하며 대화 주도권을 잡는 측은 송신, 상대편은 수신만이 가능하다. 대화 주도권을 갖고 있는 쪽은 언제든지 상대편에게 주도권을 넘길 수 있으므로 메시지를 주고받는 것이 가능하다. 대화 주도권의 제어는 송신 측의 flags를 사용하여 이루어지며 수신 측은 이러한 변화를 이벤트 값을 통해 알 수 있다.

다음은 간단한 대화형 통신의 연결 컨트롤을 넘기는 것과 연결을 종료하는 과정에 대한 설명이다.

[그림 4.5] 대화형 통신

대화형 통신


대화형 통신은 tpconnect()로 연결한 후 tpsend()와 tprecv()를 호출하여 데이터를 주고받는다. 데이터를 보내려면 tpconnect()와 tpsend()에서 flags 값의 설정으로만 움직이는 연결 컨트롤을 가져야만 가능하다.

다음 그림은 대화형 통신을 사용하는 클라이언트/서버 프로그램의 동작원리이다.

[그림 4.6] 대화형 통신 모델

대화형 통신 모델

참고

대화형 통신과 관련된 함수에 대한 자세한 설명은 “9.5. 대화형 통신”이나 "Tmax Reference Guide"를 참고한다.

4.4.1. 대화형 통신 관련 이벤트

대화형 통신에서는 다음과 같이 5가지의 이벤트가 존재한다.

이벤트받는 함수설명

TPEV_SENDONLY

(0x0020)

tprecv()연결 컨트롤이 존재하는 장소를 알려준다.

TPEV_DISCONIMM

(0x0001)

tesend()

tprecv()

tpreturn()

연결이 비규칙적으로 끊어졌을 때 받는 이벤트로 tpdiscon()이 호출되거나 하위 서비스들이 여전히 열린 채 남아 있는데 tpreturn()를 호출할 때 발생한다.

TPEV_SVCERR

(0x0002)

tpsend()

tprecv()

연결 컨트롤을 가지지 않았는데 tpreturn()를 호출할 때 발생하는 이벤트로 tpreturn()의 파라미터는 정당하지만 어떤 에러가 생겼을 때 발생한다.

TPEV_SVCFAIL

(0x0004)

tpsend()

tprecv()

연결 컨트롤을 가지지 않은 상태에서 tpreturn()를 호출하거나 tpreturn()에서 TPFAIL, TPEXIT로 설정하여 호출할 때 발생한다.

TPEV_SVCSUCC

(0x0008)

tprecv()성공적으로 서비스를 마치는 경우에 발생하는 이벤트로 TPSUCCES로 설정되어 tpreturn()이 호출된다.

참고

함수에 대한 자세한 설명은 "Tmax Reference Guide"를 참고한다.