Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP...

51
Tmax TCP/IP Service Gateway Guide Copyright © 2000 TmaxSoft Co., Ltd. All Rights Reserved

Transcript of Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP...

Page 1: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP/IP Service Gateway Guide

Copyright © 2000 TmaxSoft Co., Ltd. All Rights Reserved

Page 2: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 1

Copyright Notice Copyright©2000 TmaxSoft Co., Ltd. All Rights Reserved. TmaxSoft Co., Ltd. 대한민국 서울시 강남구 대치동 946-1 글라스타워 18 층 우)135-708 Restricted Rights Legend This software and documents are made available only under the terms of the TmaxSoft License Agreement and may be used or copied only in accordance with the terms of this agreement. No part of this document may be reproduced, transmitted, or translated in any form or by any means, electronic, mechanical, manual, or optical, without the prior written permission of TmaxSoft Co., Ltd. 소프트웨어 및 문서는 오직 TmaxSoft Co., Ltd.와의 사용권 계약 하에서만 이용이 가능하며, 사용권 계약에 따라서 사용하거나 복사 할 수 있습니다. 또한 이 매뉴얼에서 언급하지 않은 정보에 대해서는 보증 및 책임을 지지 않습니다. 이 매뉴얼에 대한 권리는 저작권에 보호되므로 발행자의 허가 없이 전체 또는 일부를 어떤 형식이나, 사진 녹화, 기록, 정보 저장 및 검색 시스템과 같은 그래픽이나 전자적, 기계적 수단으로 복제하거나 사용할 수 없습니다. Trademarks Tmax, WebtoB, WebT, and JEUS are registered trademarks of TmaxSoft Co., Ltd. All other product names may be trademarks of the respective companies with which they are associated. Tmax, WebtoB, WebT, JEUS 는 TmaxSoft Co., Ltd.의 등록 상표입니다. 기타 모든 제품들과 회사 이름은 각각 해당 소유주의 상표로서 참조용으로만 사용됩니다. Tmax TCP/IP Service Gateway Manual

Document Edition Date Version TMTS-0909-02-314 Sep 9, 2004 Tmax 3.14

Tmax 제품은 아래 표와 같습니다. 본 서는 Tmax Standard 와 옵션중에 굵게 기울임꼴로 인쇄되어 있는 내용을 포함하고 있습니다.

Tmax Standard TP Function + 2 Phase Commit

Tmax Options Web Admin Console, X.25 Gateway, TCP/IP Gateway, Host-Link, Power Builder Interface Module, SERIAL

Page 3: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 2

Gateway, TCP/IP Service Gateway

이 책에 관하여 … TCP/IP Service Gateway Development Guide 는 TCP/IP Service Gateway 를 사용하여 Tmax 시스템을 개발하는 경우의 시스템적인 측면과 개발자 측면에서의 요구사항 및 주의사항에 대한 내용을 언급한다. TCP/IP Service Gateway 는 리모트 노드와 Tmax 를 연결하는 TCP/IP Service Gateway core 부분과, TCP/IP Service Gateway 와 통신을 원하는 리모트 노드의 사용자 프로그램에서 사용할 COM 라이브러리로 구분되어 있다. 이에 Tmax 에서 TCP/IP Service Gateway 를 사용할 수 있도록 환경파일을 설정하는 부분을 실질적인 예를 제시하여 개발자의 이해를 돕는다. 누구를 위한 책인가? 이 책은 TCP/IP 를 통하여 타 시스템과 연결을 해야 하는 시스템을 구축하는 개발자들을 위한 책이다. 이를 활용하면 개발자들이 좀 더 편리하게 TCP/IP 로 연결된 시스템을 손쉽게 구축할 수 있다. 이 책의 완전한 활용을 위해서는 TCP/IP 통신, Tmax Server Programming, Windows, UNIX 등에 관련된 프로그래밍 능력을 필요로 한다. 어떻게 사용하는가? TCP/IP Service Gateway 의 개요에 대해 알아본다. TCP/IP Service Gateway 서비스의 유형에 대해 알아본다. TCP/IP Service Gateway 를 사용하기 위한 환경파일 대해 알아본다. TCP/IP Service Gateway 의 사용예제를 알아본다. 관련서 Tmax Administration Guide 규약

규 약 설 명

Page 4: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 3

{ } [ ] |

( ) Numeric String Literal

필수 항목 옵션 항목 지정된 여러 개의 값 중 배타적인 선택 구분자 디폴트 값 숫자 abc 형태의 문자열 “abc” 형태의 문자열

Page 5: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 4

차 례

1 TCP/IP Service Gateway의 개요.............................................. 6

1.1 개요.......................................................................................................................... 6

2 TCP/IP Service Gateway 서비스의 유형 ................................. 8

2.1 TMAX에서 서비스 요청 .......................................................................................... 9

2.1.1 NOREPLY 서비스 호출 ................................................................................... 9

2.1.2 REPLY 서비스 호출 ...................................................................................... 10

2.2 리모트 노드에서 서비스 요청............................................................................... 12

2.2.1 리모트 동기형 호출 방식 .............................................................................. 12

2.2.2 리모트 비동기형 호출 방식 .......................................................................... 13

3 TCP/IP Service Gateway 환경 설정 ...................................... 15

3.1 Tmax 환경 구성.................................................................................................... 16

3.1.1 TCP/IP Service Gateway 사용 옵션.............................................................. 17

3.1.2 ACK/NAK 응답을 받을 경우의 SVCGW 환경파일...................................... 18

3.1.3 지연처리 SVCGW 환경파일 ......................................................................... 19

3.2 TCP/IP Service Gateway 환경 파일.................................................................... 20

3.2.1 주소 정보 환경파일 ....................................................................................... 20

4 COM 라이브러리....................................................................... 22

4.1 API 설명 ................................................................................................................ 22

4.1.1 함수명 : ComOpen ........................................................................................ 22

4.1.2 함수명 : ComDetach...................................................................................... 23

4.1.3 함수명 : ComClose ........................................................................................ 24

4.1.4 함수명 : ComSend......................................................................................... 24

4.1.5 함수명 : ComRecv ......................................................................................... 26

5 예 제.......................................................................................... 27

Page 6: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 5

5.1 NOREPLY 서비스 호출 ........................................................................................ 27

5.1.1 개요 및 프로그램 내용.................................................................................. 27

5.1.2 프로그램 구성 ................................................................................................ 27

5.2 REPLY 서비스 호출 ............................................................................................. 33

5.2.1 개요 및 프로그램 내용.................................................................................. 33

5.2.2 프로그램 구성 ................................................................................................ 33

5.3 리모트 노드 동기형 호출 ...................................................................................... 39

5.3.1 개요 및 프로그램 내용.................................................................................. 39

5.3.2 프로그램 구성 ................................................................................................ 39

5.4 ACK/NAK 통신 방식 ............................................................................................ 43

5.4.1 개요 및 프로그램 내용.................................................................................. 43

5.4.2 프로그램 구성 ................................................................................................ 43

6 부 록 ...................................................................................... 48

6.1 COMMHEAD 파일 ................................................................................................ 48

Page 7: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 6

1 TCP/IP Service Gateway 의 개요

1.1 개요

TCP/IP Service Gateway(이하 SVCGW 라 칭함)는 Tmax 서버와 Non Tamx 서버(리모트 노드라 칭함)간의 TCP/IP 통신시 Interface 를 담당하는 Tmax 에서 제공되는 Gateway 이다. 이 SVCGW 는 크게 두개의 모듈로 나누어졌는데, 하나는 Tmax 단에서 리모트 노드와 TCP/IP 로 송수신 하는 부분이고, 나머지는 리모트 노드에서 Tmax 의 SVCGW 와 통신을 담당하는 COM 라이브러리로 분리되어 있다. 이 두개의 모듈을 이용하여 Tmax 시스템과 NON Tmax 시스템 사이에 TCP/IP 로 통신할 수 있도록 제공하는 모듈이 TCP/IP Service Gateway 이다.

Tmax 단에 설치되는 SVCGW 는 Tmax 서버의 한 종류로서 Tmax 환경파일에 서버로 등록해야만 사용할 수 있다. 하지만 일반 다른 서버들을 만드는 방식과는 다르게 생성해 주어야 한다. 일반 서버는 TCS 나 UCS 용 서버 라이브러리를 이용하여 서버를 생성하나 SVCGW 는 이미 사용자가 직접 사용할 수 있도록 실행 가능한 파일로 제공함으로 사용자는 SVCGW 를 Tmax Config 파일에 서버로 등록만 해주면 된다.

SVCGW 는 NON Tmax 에서 보내온 메시지를 받아서 사용자가 요청한 서비스로 tpacall()하며, 서비스 결과는 처음 요청한 NON Tmax 서버로 전송한다. 반대로 Tmax 서비스에서 SVCGW 를 tpcall()이나 기타 다른 방식으로 서비스를 요청하면 SVCGW 는 NON Tmax 로 요청 메시지를 보낸 후 응답이 오면 자신을 call 한 서비스로 tpreturn()한다.

이와 같이 복잡하게 타 시스템과 TC/IP 로 연결하기 위해 필요한 작업들, 예를 들어 소켓을 연결하고 메시지를 주고 받는 일 등은 모두 TCP/IP Service Gateway 와 COM 라이브러리에서 처리해 줌으로 개발자는 업무 로직만을 작성하여 손쉽게 타 시스템과 연결할 수 있다.

SVCGW 의 대략적인 동작 구조는 다음과 같다.

Page 8: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 7

그림 1-1 SVCGW 동작 구조

SVCGW 는 위의 그림에서 보듯이 리모트 노드로부터 서비스 요청을 받아서 처리할 수 있고(그림 1-1 에서 실선 표시), Tmax 클라이언트나 서비스로부터 서비스 요청을 받아서 리모트 노드로 서비스 요청을 할 수도 있다(그림 1-1 에서 점선 표시). 이와 같이 리모트 노드로 부터 서비스 요청을 받아서 처리하는 것을 OUTBOUND 서비스라 하고, Tmax 클라이언트로부터 서비스 요청을 받아서 리모트 노드로 서비스 요청을 하는 것을 INBOUND 서비스라 한다.

또한, SVCGW 사용자는 TCP/IP 통신에 관련된 프로그램을 작성하지 않아도 SVCGW 와 TCP/IP 로 통신할 수 있도록 TCP/IP 통신 라이브러리(이하 COM 라이브러리라 칭함)를 제공한다. 사용자는 이 라이브러리를 이용하여 편리하게 SVCGW 와 서비스를 받을 수 도 있고, 서비스를 요청할 수 도 있다.

이렇게 Tmax 단의 SVCGW 와 리모트 노드 단의 TCP/IP 통신 라이브러리를 이용하여 사용자는 양 방향의 서비스를 이용할 수 있다. OUTBOUND 인 경우에는 리모트에서 Tmax 단의 서비스명을 이용하여 서비스를 호출하고, INBOUND 인 경우에는 Tmax 단의 클라이언트나 서비스에서 SVCGW 에 등록된 서비스명을 이용하여 리모트 노드로 서비스를 요청 할 수 있다.

Page 9: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 8

2 TCP/IP Service Gateway 서비스의

유형

SVCGW 는 리모트 노드와 TCP/IP 로 통신을 하며, Tmax 클라이언트의 요청을 리모트 노드로 보내기도 하고 리모트 노드의 요청을 Tmax 서비스에서 처리하도록 중간역할을 해 준다.

리모트 노드단에서 사용하는 COM 라이브러리 부분에 대한 설명은 “4. COM 라이브러리” 부분에서 설명하고, 여기서는 Tmax 단에 설치되는 부분에서 제공하는 서비스 유형에 대해서만 설명한다.

SVCGW 는 크게 동작하는 방식은 Tmax 단의 서비스나 클라이언트에서 리모트 노드로 서비스를 요청하는 방식과 반대로, 리모트 노드에서 Tmax 의 서비스를 호출하는 방식으로 나눌 수 있다. SVCGW 는 항상 서버 모드로 동작하며 리모트 노드는 클라이언트 모드로 동작해야 한다. 일단 리모트 노드와 연결이 이루어지면 어느쪽에서도 먼저 서비스를 요청할 수 있다.

SVCGW 는 Tmax 단에서 리모트 노드로 요청하는 방식은 비동기형 방식으로 처리한다. 즉, 서비스나 클라이언트에서 리모트로 서비스를 tpcall 로 요청하더라도 SVCGW 는 리모트로 서비스 요청을 보내고 서비스나 클라이언트에게 곧바로 정상 응답을 리턴한다. 나중에 리모트 노드에서 서비스 요청에 대한 응답일지라도 새로운 서비스 요청으로 간주한다. 그러므로 Tmax 단에서 요청하는 모든 서비스는 비동기형 방식으로 동작한다.

반대로 리모트 노드에서 Tmax 단의 서비스를 요청하는 경우에는 비동기형, 동기형 모두 사용할 수 있다. 비동기형은 COM 라이브러리를 이용하여 SVCGW 에 서비스를 요청시 flags 에 COMMNOREPLY 를 주면 SVCGW 는 Tmax 에 사용자가 요청한 서비스를 호출만 하고 응답은 받지 않는다.

Page 10: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 9

동기형 방식은 COM 라이브러리를 이용하여 SVCGW 에 서비스를 요청시 flags 에 COMMNOREPLY 를 주지않고 요청하면 SVCGW 는 Tmax 에 사용자가 요청한 서비스를 호출하고 응답을 받으면 서비스를 요청한 리모트 노드에 응답을 전송한다.

또한 리모트 노드에서 Tmax 단에 서비스 요청시 지연처리 방식을 지원한다. Flags 에 COMMDELAY 를 주면 SVCGW 는 나중에 사용자가 RQ 의 데이터를 일괄적으로 처리할 수 있도록 RQ 에 요청 데이터를 저장한다. 지연처리는 항상 비동기형 방식으로 처리한다.

2.1 TMAX 에서 서비스 요청

Tmax 의 서비스나 클라이언트에서 먼저 리모트 노드로 서비스를 요청하는 경우이다. 리모트 노드로 서비스 요청을 보내고 응답을 받지 않는 경우와, 서비스 요청을 보내고 해당 응답을 새로운 요청으로 처리하는 두가지 방식으로 구분할 수 있다. SVCGW 는 지정된 리모트 노드로만 서비스를 요청할 수 있으므로 사용자는 서비스 요청을 하고자 하는 리모트 노드를 알고있어야 한다. 이를 위해서 Tmax Config 파일에 서비스명을 등록하고, 해당 서비스명을 SVCGW Config 파일의 리모트 노드별 정보에 등록해 주어야 한다. SVCGW 는 서비스 요청을 받으면 요청한 서비스명으로 리모트 노드를 찾아서 해당 리모트 노드에 데이터를 전송한다.

2.1.1 NOREPLY 서비스 호출

이 방식은 Tmax 의 서비스나 클라이언트에서 SVCGW 로 tpcall 로 서비스를 요청하고 결과에 관계없이 처리하는 방식이다. 아래 그림은 Tmax 클라이언트의 요청을 받은 서비스에서 SVCGW 로 서비스로 tpcall 을 하면 SVCGW 는 리모트 노드로 서비스를 요청하고, 리모트 노드의 결과에 관계없이 곧바로 리턴한다.

Page 11: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 10

그림 2-1 Tmax 단 NOREPLY 서비스 요청 SVCGW

SVCGW 와 리모트 노드는 연결되어 있는 상태이다.

Tmax 클라이언트는 Tmax 서비스를 tpcall 한다.

Tmax 서비스에서는 클라이언트의 요청을 받아들여 SVCGW 로 서비스를 tpcall 한다. 사용자는 SVCGW 에는 많은 서비스가 등록되어 있으므로 사용자가 요청하고자 하는 리모트 노드와 연결된 서비스명을 지정해야 한다.

SVCGW 는 사용자가 지정한 서비스와 연결된 리모트 노드에 서비스를 요청한다.

SVCGW 는 서비스를 요청한 서비스에 정상 응답을 tpreturn 한다.

이와 같은 방식으로 SVCGW 를 동작시키게 되면 Tmax 클라이언트에서 호출한 Tmax 서비스는 SVCGW 를 호출한 후에 결과에 관계없이 계속 처리하게 된다.

2.1.2 REPLY 서비스 호출

이 방식은 최초에 서비스를 요청하는 Tmax 의 서비스나 클라이언트는 SVCGW 로 tpcall 로 서비스를 요청하고 결과에 관계없이 처리한다. 리모트 노드는 해당 요청 서비스를 처리하고 결과를 Tmax 단의 새로운 서비스를 호출하는 방식이다.

Page 12: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 11

아래 그림은 Tmax 클라이언트의 요청을 받은 서비스에서 SVCGW 로 서비스로 tpcall 을 하면 SVCGW 는 리모트 노드로 서비스를 요청하고, 리모트 노드의 결과에 관계없이 곧바로 리턴한다. 리모트 노드는 처리 결과를 가지고 Tmax 단의 새로운 서비스를 호출한다. 새로운 서비스 호출시에는 Tmax 단의 서비스 처리 결과를 받을 수도 있고 받지 않을 수도 있다. ComSend 함수의 flags 에 설정하는 값에 따라 응답을 받을 수도 있고 받지않을 수도 있다. 아래 그림은 서비스처리 결과를 받지 않은 경우이다.

그림 2-2 Tmax 단 REPLY 서비스 요청 SVCGW

SVCGW 와 리모트 노드는 연결되어 있는 상태이다.

Tmax 클라이언트는 Tmax 서비스를 tpcall 한다.

Tmax 서비스에서는 클라이언트의 요청을 받아들여 SVCGW 로 서비스를 tpcall 한다. 사용자는 SVCGW 에는 많은 서비스가 등록되어 있으므로 사용자가 요청하고자 하는 리모트 노드와 연결된 서비스명을 지정해야 한다.

SVCGW 는 사용자가 지정한 서비스와 연결된 리모트 노드에 서비스를 요청한다.

SVCGW 는 서비스를 요청한 서비스에 정상 응답을 tpreturn 한다.

Page 13: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 12

리모트 노드에서 결과에 대한 새로운 서비스 요청을 받는다.

SVCGW 는 Tmax 에 사용자가 지정한 서비스를 호출한다.

이와 같은 방식은 최초에 서비스를 호출하는 서비스와 결과를 처리하는 서비스를 분리하는데 사용하는 경우이다.

2.2 리모트 노드에서 서비스 요청

리모트 노드에서 Tmax 의 서비스를 호출하는 것으로 이 방식은 동기형 방식과 비동기형 방식으로 나눌 수 있다. 동기형은 서비스를 요청하고 응답을 기다리는 방식이고, 비동기형은 서비스를 요청하고 응답을 기다리지 않는 방식이다. 그러나 동기형 방식중에 서비스를 요청하고 응답을 받기전에 다른 서비스 요청이 해당 리모트 노드로 전송될 수 있으므로 이에 대한 처리를 적절히 수행해야 한다.

2.2.1 리모트 동기형 호출 방식

이 방식은 리모트 노드에서 SVCGW 로 먼저 서비스를 요청하고 응답을 기다리는 방식이다. SVCGW 는 리모트노드에서 요청한 서비스를 호출하고 그 결과를 받아서 해당 서비스를 요청한 채널로 결과를 전송한다. 리모트 노드는 동시에 SVCGW 로 Tmax Config 에 정의되어 있는 MAXSACALL 개수를 초과하여 호출할 수 없다. 리모트 노드단의 사용자는 COM 라이브러리를 이용하여 SVCGW 로 서비스를 호출하고 응답을 받는다. 리모트 노드의 사용자는 ComSend 시 flags 에 아무것도 설정하지 않아야 한다.

Page 14: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 13

림 2-3 리모트 동기형 요청 SVCGW

SVCGW 와 리모트 노드는 연결되어 있는 상태이다.

리모트 노드는 SVCGW 와 연결된 채널로 메세지를 전송한다.

SVCGW 는 tpacall()로 Tmax 서비스를 호출한다.

서비스 처리 결과를 SVCGW 는 받아서 메세지를 요청한 채널을 찾는다.

해당 채널이 정상적으로 연결되어 있으면 결과를 전송한다.

이와 같은 동작 방식은 리모트 노드에서 Tmax 단의 서비스를 호출하는 가장 보편적인 방식이다. SVCGW 는 리모트 노드의 채널 정보를 보관하였다가 서비스로 부터 결과를 수신받으면, 보관하고 있는 채널중에서 해당 채널을 찾아서 결과를 전송한다. 이때 해당 채널로 결과를 되돌려 주기전에 다른 요청을 할 수 있다. 즉, SVCGW 는 리모트 노드에서 요청한 채널은 블록되지않으므로 요청에 대한 응답이 리모트 로드로 전송되기 전에 다른 요청 서비스가 리모트 노드로 전송될 수 있으므로 이에 대한 처리를 해야 한다.

2.2.2 리모트 비동기형 호출 방식

이 방식은 리모트 노드에서 SVCGW 로 먼저 서비스를 요청하고 응답을 기다리지 않는 방식이다. SVCGW 는 리모트 노드에서 요청한 서비스를 호출하고 그 결과는 받지 않는다. 이런 방식으로 처리하기 위해서 리모트 노드에서는 ComSend 시 flags 에 COMMNOREPLY 를 설정해야 한다.

Page 15: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 14

COMMNOREPLY 가 설정되어 있으면 SVCGW 는 Tmax 에 서비스를 요청만 하고 응답은 받지 않도록 처리하다.

그림 2-4 리모트 비동기형 요청 SVCGW

SVCGW 와 리모트 노드는 연결되어 있는 상태이다.

리모트 노드는 SVCGW 와 연결된 채널로 메세지를 전송한다.

SVCGW 는 tpacall()로 Tmax 서비스를 호출한다.

Page 16: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 15

3 TCP/IP Service Gateway 환경 설정

SVCGW 서버를 구성되려면 다음과 같은 파일들이 존재하여야 한다.

UNIX

Directory 파일명

Lib tmaxcom.a, tmaxcom.so

Lib64 tmaxcom.a, tmaxcom.so

Appbin tcpsvcgw

Windows

Directory 파일명

Lib tmaxcom.lib, tmaxcom.dll

bin tcpsvcgw.exe

위의 파일(SVCGW 와 라이브러리)들은 Tmax SVCGW 인스톨시에 각 디렉토리 아래에 만들어 진다. 단, 현재 Windows 시스템에 대해서만 SVCGW 가 수행됨으로 Unix 사용자을 위해서는 다음 버전에서 지원할 예정입니다.

Page 17: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 16

3.1 Tmax 환경 구성

SVCGW 를 사용하기 위해서는 Tmax 환경파일에 SVCGW 를 서버로서 등록 해야 한다. Tmax 서버중 UCS 형 서버와 등록 방법이 비슷한데, 차이점은 SVRTYPE 이 UCS 에서 CUSTOM_GATEWAY 라는 차이밖에 없다. 등록하는 방법은 아래와 같다.

*DOMAIN

tmax SHMKEY = 88000,

MINCLH = 1,

MAXCLH=1,

TPORTNO=8800

*NODE

tmax1 TMAXDIR=”/home/tmax”,

APPDIR=”/home/tmax/appbin”

*SVRGROUP

svg1 NODENAME=tmax1

*SERVER

tcpsvcgw SVGNAME=svg1,

MIN=1,

MAX=1,

CPC=10,

SVRTYPE=CUSTOM_GATEWAY,

CLOPT=”-- -P 8090 -F /home/tmax/config/tcpsvcgw.cfg –N

20”

*SERVICE

TCPSVC1 SVRNAME= tcpsvcgw

TCPSVC2 SVRNAME= tcpsvcgw

SVCGW 를 사용하기 위해 Tmax 환경파일을 수정할 때는 SERVER, SERVICE 절만 적절히 설정하면 된다.

MIN : SVCGW 의 프로세스 개수를 지정하는 항목으로써 이 항목의 값은 항상 1 로 지정해야 한다.

Page 18: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 17

CPC : CPC 항목은 Tmax engine 과 SVCGW 간의 채널 수를 지정하는 항목으로써, Tmax 의 클라이언트나 서비스에서 리모트 노드로 요청하는 경우에는 동시에 요청하는 수만큼 CPC 수를 지정해야 한다. 반대인 경우에는 SVCGW 는 Tmax engine 으로 tpacall 로 요청하므로 많은 채널을 사용할 필요는 없다.

CLOPT: 아래 설명 참조

SVCTIME: SVCGW 는 리모트 노드로 요청한 서비스에 대해서 서비스 타입 아웃을 적용하지 않는다. 왜냐하면 리모트 노드로 서비스 요청만하고 응답은 별도의 서비스로 처리함으로 SVCGW 에서는 서비스 타입 아웃을 적용하지 않습니다.

3.1.1 TCP/IP Service Gateway 사용 옵션

SVCGW 는 Tmax config 파일에 등록할 수 있는 항목이 제안되어 있는 관계로 CLOPT 항목에 몇가지 옵션을 설정해야 한다. 아래에 설명하는 옵션에 따라서 SVCGW 이 동작 방식이 다르므로 아래의 설명을 정확히 이해해야 한다.

F

이 옵션은 SVCGW 에서 사용할 리모트 노드 정보 및 리모트

노드를 찾는 서비스명이 등록된 파일을 지정하는 항목이다. SVCGW 는 이 옵션에 지정한 파일의 정보를 로드하여 리모트

노드의 정보를 보관하였다가 Tmax 단의 서비스나

클라이언트에서 리모트 노드로 서비스 요청시 요청한

서비스명으로 리모트 노드를 찾고자 하는 경우에 사용한다. 이 파일의 등록 방법은 “3.2 TCP/IP Service Gateway 환경

파일“을 설명을 참조하기 바란다.

P

SVCGW 는 항상 서버 모드로만 동작한다. 리모트 노드는

SVCGW 가 실행되는 서버의 주소와 이 옵션에 지정하는

포트번호를 이용하여 연결을 맺게된다. SVCGW 는 여러 개의

포트번호를 동시에 Listen 할 수 있으므로 이 옵션에 리모트

노드에서 연결을 원하는 포트를 모두 등록하면 된다. (예: “8880,8881,8882”).

Page 19: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 18

q

리모트 노드에서 Tmax 단의 서비스를 요청시 지연처리

방식으로 사용할 수 있다. 즉, Tmax 에서 제공하는 RQ 에

임시 데이터를 보관한 후에 나중에 일괄적으로 처리하는

방식으로 SVCGW 를 사용할 수 있는데, 이때 사용할 RQ 이름을 등록하는 옵션이다.

A

SVCGW 와 리모트 노드간 송수신 데이터에 대해서 ACK/NAK 메시지를 주고받을 것인지를 지정하는 옵션이다. 이 옵션을

지정하면 송수신 데이터에 대해서 ACK/NAK 를 주고 받는다. Tmax 단의 SVCGW 는 내부적으로 ACK/NAK 메시지를

처리하나 리모트 노드의 COM 라이브러리에서는

ACK/NAK 를 처리하지 않으므로 사용자쪽 프로그램에서 이에

대한 처리 부분이 있어야 한다. (Default: ACK/NAK 주고 받지

않음)

N

“-F” 옵션에 리모트 노드의 정보를 등록하거나 또는 ComOpen 시에 리모트 노드를 등록할 수 있다. 이 경우에는 Config 파일에 등록하지 않아도 된다. 그러나 나중에 ComOpen 시에

등록하는 리모트 노드의 총 수를 알 수 없는 문제가

발생한다. 이를 위해서 이 옵션에 총 리모트 노드의 수를

지정하는 옵션이다. Config 파일에 등록된 리모트 노드의 수와

이 옵션에 등록된 옵션의 수를 비교하여 많은 값을 취한다.

3.1.2 ACK/NAK 응답을 받을 경우의 SVCGW 환경파일

ACK/NAK 메시지를 받을 경우의 SVCGW 환경 설정은 아래와 같다.

*DOMAIN

...

*NODE

...

*SVRGROUP

...

*SERVER

tcpsvcgw SVGNAME=svg1,

Page 20: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 19

MIN=1,

MAX=1,

CPC=10,

SVRTYPE=CUSTOM_GATEWAY,

CLOPT=”-- -P 8090 -F /home/tmax/config/tcpsvcgw.cfg –N 20

-A ”

*SERVICE

TCPSVC1 SVRNAME= tcpsvcgw

위와 같이 환경파일을 작성한 경우 tcpsvcgw 라는 이름의 SVCGW 는 1 개가 Tmax boot 시에 boot 되게 된다. tcpsvcgw 의 서비스명은 TCPSVC1 이다. SVCGW 는 리모트 노드와 데이터 송수신시 ACK/NAK 메시지를 주고 받아야 함으로 리모트 노드쪽의 프로그램시 ACK/NAK 에 대한 부분을 감안해야 한다.

3.1.3 지연처리 SVCGW 환경파일

RQ 를 이용하여 지연처리 방식으로 SVCGW 를 사용할 경우의 환경 설정은 아래와 같다.

*DOMAIN

...

*NODE

...

*SVRGROUP

...

*SERVER

tcpsvcgw SVGNAME=svg1,

MIN=1,

MAX=1,

CPC=10,

SVRTYPE=CUSTOM_GATEWAY,

CLOPT=”-- -P 8090 -F /home/tmax/config/tcpsvcgw.cfg –N 20

–q testq ”

Page 21: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 20

*SERVICE

TCPSVC1 SVRNAME= tcpsvcgw

위와 같이 환경파일을 작성하고 리모트 노드에서 COM 라이브러리를 이용하여(Flags 에 COMMDELAY set) Tmax 단으로 서비스를 요청하면 SVCGW 는 요청 데이터를 “testq”에 저장한다. SVCGW 는 리모트 노드에서 수신한 데이터를 RQ 에 저장만 할 뿐 어떠한 처리도 하지 않으므로 사용자는 RQ 에 저장된 데이터를 처리할 수 있어야 한다.

3.2 TCP/IP Service Gateway 환경 파일

Tmax 환경 파일의 CLOPT 절에 “-F” 옵션으로 지정한 파일은 아래에 설명하는 Format 으로 등록되어 있어야 한다. 이 파일은 리모트 노드 주소와 서비스명을 등록하는 파일이다.

3.2.1 주소 정보 환경파일

#######################################################

# TCP/IP Service Gateway Config #

#######################################################

# gwno ipaddr Tmaxsvc

# 0 1.1.1.1 SVC

#######################################################

# line start with "#" is comment line

# gwno must start at 0 and be increased by 1

# ipaddr: remote node ipaddr

# svc: tmax service name

#######################################################

0 1.1.1.1 SVC1

항 목 명 설 명.

Page 22: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 21

Gateway 번호

이 항목은 Tmax Config 파일의 MIN 항목의 값이 2 이상인 경우에 사용하는 항목이다. 그러나 MIN 항목이 항상 1 이므로 이 항목은 항상 0 으로

지정해야 한다.

ipaddr 리모트 노드의 주소를 등록하는 항목이다. SVCGW 는 등록된 주소를 이용하여 리모트

노드에서 접속시 관련된 서비스명을 찾는다.

서비스명

Tmax 단의 클라이언트나 서비스에서 특정 리모트

노드에 서비스를 요청하기 위해서는 SVCGW 에

보내고자 하는 리모트 노드를 알려주어야 한다. 이러한 경우에 사용하는 항목으로 SVCGW 는 이

항목에 지정한 서비스명으로 SVCGW 를 호출하면

해당 서비스명으로 리모트 노드를 찾아서 해당

리모트 노드에 데이터를 전송한다.

이 항목에 지정한 서비스명은 반드시 Tmax Config 파일의 SERVICE 절에 등록된 서비스명이어야

한다.

㈜ SVCGW 가 리모트 노드를 찾는 방법은 위와

같이 등록한 서비스명으로 찾는 방법과 나중에

리모트 노드에서 SVCGW 로 연결을 설정할 때

리모트 노드의 이름을 등록할 수 있다. 이렇게

등록하는 리모트 이름은 반드시 Tmax Config 의

SERVICE 절에 등록된 이름이어야 한다.

SVCGW 는 위의 환경 파일에 등록된 수와 “-N” 옵션으로 지정한 수중 큰 값을 기준으로 내부적으로 버퍼를 할당하여 멀티플렉싱 방식으로 처리한다.

Page 23: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 22

4 COM 라이브러리

COM 라이브러리는 리모트 노드에서 Tmax 단의 SVCGW 와 TCP/IP 로 통신할 수 있도록 Tmax 에서 제공하는 라이브러리이다. SVCGW 와 통신을 원하는 리모트 노드는 반드시 COM 라이브러리를 사용하여 통신해야 한다. 리모트 노드의 사용자는 COM 라이브러리를 이용하여 Tmax 단과 TCP/IP 로 서비스를 요청하거나, 또는 서비스 요청을 받을 수 있다. 리모트 노드의 사용자쪽에서는 Tmax 단과 통신시 통신관련 부분을 COM 라이브러리에서 처리함으로 보다 쉽게 Tmax 의 서비스를 이용할 수 있다.

리모트 노드에서 Tmax 단과 TCP/IP 로 통신하는 경우에는 항상 Tmax 단이 서버 모드가 되고, 리모트 노드단이 클라이언트 모드가 된다. 여기서는 SVCGW 관점에서 COM 라이브러리에서 제공하는 각각의 API 에 대한 사용법을 설명한다.

4.1 API 설명

여기서 설명하는 COM 라이브러리의 프로토타입은 comhead.h 헤더 파일에 정의되어 있다.

4.1.1 함수명 : ComOpen

4.1.1.1 설 명 :

이 함수는 Tmax 단의 SVCGW 와 TCP/IP 로 연결을 맺고 리모트 노드를 SVCGW 에 등록하는 함수이다. Tmax 단의 SVCGW 의 환경 파일의 서비스명 항목에 서비스명을 등록하지 않았으면 이 함수를 이용하여 반드시 서비스명을 등록해야 한다, 서비스명이 등록되지 않았으면 리모트 노드에서 Tmax 단으로 서비스는 요청할 수 있으나 반대로 Tmax 단에서 리모트 노드로 서비스는 요청할 수 없다. 사용자는 다른 함수를 사용하기 전에 반드시 이 함수를 사용하여 Tmax 의 SVCGW 와 연결해야 한다.

Page 24: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 23

4.1.1.2 사용법 :

int ComOpen(int type, char *id, char *port)

type Tmax 와 통신이 사용할 프로토콜(TCPIP/SERIAL)을나타낸다. 각각의 프로토콜은 comhead.h 파일에

등록되어 있다.

id 리모트 노드를 식별하는 코드이다. 이 코드는 위에서

설명한 SVCGW 환경 파일과 관련이 있다. 환경 파일에

서비스명을 등록하거나 또는 이 함수에서 코드를

지정하여 리모트 노드를 식별하는 코드를 등록할 수

있다. 이 함수에서 등록하는 코드는 반드시 Tmax 의

Config 파일의 SERVICE 절에 등록된 서비스명 이어야

한다.

port Tmax 단의 SVCGW 와 연결할 때 사용할 서버의 주소와

포트를 지정하는 항목이다. SVCGW 가 실행되고 있는

서버의 주소와 SVCGW CLOPT 절에 “-P” 옵션으로

등록한 포트중 하나를 지정한다. (“1.1.1.1:8090”)

4.1.1.3 리턴값 :

정상 : 0, 에러: -1

4.1.2 함수명 : ComDetach

4.1.2.1 설 명 :

이 함수는 Tmax 단의 SVCGW 와의 등록을 해제하기 위해서 사용하는 함수이다. 이 함수는 등록만 해제하고 실질적인 연결을 끊지 않는다. 이 함수를 사용하면 Tmax 단의 SVCGW 와 데이터를 송수신 할 수 없다.

Page 25: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 24

4.1.2.2 사용법 :

int ComDetach(void)

4.1.2.3 리턴값 :

정상 : 0, 에러: -1

4.1.3 함수명 : ComClose

4.1.3.1 설 명 :

이 함수는 Tmax 단의 SVCGW 와 등록을 해제하고 연결을 끊는 함수이다. 그러므로 Tmax 단의 SVCGW 와 통신을 끊고자 하는 경우에는 반드시 이 함수를 호출해야만 한다.

4.1.3.2 사용법 :

int ComClose(void)

4.1.3.3 리턴값 :

정상 : 0, 에러: -1

4.1.4 함수명 : ComSend

4.1.4.1 설 명 :

이 함수는 리모트 노드에서 Tmax 단의 SVCGW 로 데이터를 전송하는 함수이다. 이 함수를 이용하여 Tmax 단에 서비스를 요청하거나 또는

Page 26: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 25

응답을 전송할 수 있다. Tmax 단의 서비스 요청에 대한 응답을 보낼 경우에도 반드시 Tmax 단의 새로운 서비스명을 지정해야 한다.

4.1.4.2 사용법 :

Int ComSend(char *svc, int msgtype, char *data, long len, long flags)

svc Tmax 단에 요청할 서비스명을 지정하는 항목이다.

msgtype Tmax 단의 SVCGW 에 전송하는 데이터의 종류를 나타낸다.

각각의 Message 타입은 commhead.h 파일을 참조하기

바란다.

data Tmax 단의 SVCGW 에 전송할 테이터가 저장된 버퍼의

포인터이다.

len 전송할 데이터의 길이를 나타낸다.

flags 서비스 요청시 SVCGW 가 해당 요청을 어떻게 처리해야

하는지를 니타낸다. flags 에 COMMDELAY 가 set 되어

있으면 SVCGW 는 해당 데이터를 지연처리로 인식하여

RQ 에 저장하고, COMMNOREPLY 가 set 되어 있으면

서비스만 요청하고 응답을 받지 않겠다는 의미로 인식된다. 현재 flags 에 지정할 수 있는 값은 두가지로 commhead.h 파일을 참조하기 바란다.

4.1.4.3 리턴값 :

정상 : 0, 에러: -1

Page 27: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 26

4.1.5 함수명 : ComRecv

4.1.5.1 설 명 :

이 함수는 Tmax 단의 SVCGW 로부터 데이터를 수신하는 함수이다. 데이터는 서비스 요청일 수도 있고, 응답 데이터 일 수도 있다.

4.1.5.2 사용법 :

Int ComRecv(char *svc, int *msgtype, char *data, long *len, long flags)

svc Tmax 단에 요청한 서비스명이 저장될 항목이다.

msgtype Tmax 단의 SVCGW 에서 전송하는 데이터의 종류를

나타낸다.

각각의 Message 타입은 commhead.h 파일을 참조하기

바란다.

data Tmax 단의 SVCGW 에서 수신한 테이터가 저장될 버퍼의

포인터이다. 이 버퍼는 수신 데이터중 가장 큰 데이터의

버퍼 크기를 가져야 한다.

len 수신한 데이터의 길이를 나타낸다.

flags 이 항목은 사용하지 않는다.

4.1.5.3 리턴값 :

정상 : 0, 에러: -1

Page 28: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 27

5 예 제

본 장에서는 2 장에서 설명한 SVCGW 의 각 역할에 대한 예제에 대해 설명하도록 한다.

5.1 NOREPLY 서비스 호출

5.1.1 개요 및 프로그램 내용

Tmax 의 서비스나 클라이언트에서 SVCGW 로 tpacall 로 서비스를 요청하고 결과에 관계없이 처리하는 예제이다.

5.1.2 프로그램 구성

Config file : tmax.m, tcpsvcgw.cfg

Remote Node : remote.c

< tmax.m >

*DOMAIN

res SHMKEY = 88000,

MINCLH = 1,

MAXCLH = 1,

TPORTNO = 8888

*NODE

node1 TMAXDIR=”/home/tmax”,

APPDIR=”/home/tmax/appbin”

*SVRGROUP

svg1 NODENAME = node1

Page 29: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 28

*SERVER

tcpsvcgw SVGNAME = svg1, MIN=1, MAX=1,

CPC=10, SVRTYPE=CUSTOM_GATEWAY,

CLOPT=”-- -P 8090 -F /home/tmax/config/tcpsvcgw.cfg –N 20”

svr SVGNAME = svg1, MIN=1, MAX=1

*SERVICE

TCPSVC1 SVRNAME = tcpsvcgw

TOUPPER SVRNAME = svr

< tcpsvcgw.cfg >

#######################################################

# TCP/IP Service Gateway Config #

#######################################################

# gwno ipaddr Tmaxsvc

# 0 1.1.1.1 SVC

#######################################################

# line start with "#" is comment line

# gwno must start at 0 and be increased by 1

# ipaddr: remote node ipaddr

# svc: tmax service name

#######################################################

0 1.1.1.1 TCPSVC1

< toupper.c >

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <usrinc/atmi.h>

main(int argc, char *argv[])

{

char *sndbuf, *rcvbuf;

Page 30: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 29

long rcvlen;

if (argc != 2) {

printf("Usage: toupper string\n");

exit(1);

}

if (tpstart((TPSTART_T *)NULL) == -1){

printf("Tpstart failed\n");

exit(1);

}

if ((sndbuf = (char *)tpalloc("STRING", NULL, 0)) == NULL) {

printf("Sendbuf alloc failed !\n");

tpend();

exit(1);

}

if ((rcvbuf = (char *)tpalloc("STRING", NULL, 0)) == NULL) {

printf("Recvbuf alloc failed !\n");

tpfree((char *)sndbuf);

tpend();

exit(1);

}

strcpy(sndbuf, argv[1]);

if(tpcall("TOUPPER", sndbuf, 0, &rcvbuf, &rcvlen, 0)==-1){

printf("Can't send request to service TOUPPER\n");

tpfree((char *)sndbuf);

tpfree((char *)rcvbuf);

tpend();

exit(1);

}

printf("Sendbuf data: %s\n", sndbuf);

printf("Recvbuf data: %s\n", rcvbuf);

Page 31: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 30

tpfree((char *)sndbuf);

tpfree((char *)rcvbuf);

tpend();

}

< svr.c >

#include <stdio.h>

#include <usrinc/atmi.h>

TOUPPER(TPSVCINFO *msg)

{

char *sndbuf;

long sndlen;

if ((sndbuf = (char *)tpalloc("STRING", NULL, 0)) == NULL) {

printf("sendbuf alloc failed !\n");

tpreturn(TPFAIL, -1, NULL, 0, 0);

}

strcpy(sndbuf, msg->data);

sndlen = msg->len;

/* 리모트 TCPSVC1 서비스 호출 */

if(tpacall("TCPSVC1", sndbuf, sndlen, TPNOREPLY)==-1){

printf("Can't send request to service TCPSVC1\n");

tpfree((char *)sndbuf);

tpreturn(TPFAIL, -1, NULL, 0, 0 );

}

tpfree((char *)sndbuf);

tpreturn(TPSUCCESS,0,(char *)msg->data, msg->len,0);

}

< remote.c >

Page 32: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 31

#include <stdio.h>

#include <winsock2.h>

#include <usrinc/commhead.h>

#define SVR_PORT "1.1.1.1:8090"

int main(int argc, char *argv[])

{

int n, msgtype;

long ilen, olen;

char buffer[1024];

char svcname[24];

/* Gateway 에 리모트 노드를 등록한다 */

printf("Remote Service Start...\n\n");

n = ComOpen(TCPIP, NULL, SVR_PORT );

if (n < 0) {

perror("Gateway register error:");

return -1;

}

while(1) {

memset(svcname, 0x00, sizeof(svcname));

memset(buffer, 0x00, sizeof(buffer));

/* 데이터를 수신한다. */

n = ComRecv(svcname, &msgtype, buffer, &olen, COMMNOFLAG);

if (n < 0) {

perror("Data Receive error:");

ComClose();

return -1;

}

printf("REMOTE RECV : svcname = [%s]\n", svcname);

printf("REMOTE RECV : len = %d\n",olen);

printf("REMOTE RECV : data= [%s]\n\n", buffer);

}

/* Gateway 와 연결을 해제한다 */

ComClose( );

Page 33: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 32

}

Page 34: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 33

5.2 REPLY 서비스 호출

5.2.1 개요 및 프로그램 내용

Tmax 의 서비스나 클라이언트에서 SVCGW 로 tpacall 로 서비스를 요청하고 결과에 관계없이 처리하고, 리모트 노드에서 서비스 요청에 대한 처리 결과를 Tmax 단의 다른 서비스에서 처리할 수 있도록 “TOLOWER”를 호출하는 예제이다.

5.2.2 프로그램 구성

Config file : tmax.m, tcpsvcgw.cfg

Remote Node : remote.c

< tmax.m >

*DOMAIN

Res SHMKEY = 88000,

MINCLH = 1,

MAXCLH = 1,

TPORTNO = 8888

*NODE

node1 TMAXDIR=”/home/tmax”,

APPDIR=”/home/tmax/appbin”

*SVRGROUP

svg1 NODENAME = node1

*SERVER

tcpsvcgw SVGNAME = svg1,

MIN=1,

MAX=1,

CPC=10,

SVRTYPE=CUSTOM_GATEWAY,

Page 35: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 34

CLOPT=”-- -P 8090 -F /home/tmax/config/tcpsvcgw.cfg –N

20”

svr SVGNAME = svg1,

MIN=1,

MAX=1,

*SERVICE

TCPSVC1 SVRNAME = tcpsvcgw

TOUPPER SVRNAME = svr

TOLOWER SVRNAME = svr

< tcpsvcgw.cfg >

#######################################################

# TCP/IP Service Gateway Config #

#######################################################

# gwno ipaddr Tmaxsvc

# 0 1.1.1.1 SVC

#######################################################

# line start with "#" is comment line

# gwno must start at 0 and be increased by 1

# ipaddr: remote node ipaddr

# svc: tmax service name

#######################################################

0 1.1.1.1 TCPSVC1

< toupper.c >

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <usrinc/atmi.h>

main(int argc, char *argv[])

{

Page 36: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 35

char *sndbuf, *rcvbuf;

long rcvlen;

if (argc != 2) {

printf("Usage: toupper string\n");

exit(1);

}

if (tpstart((TPSTART_T *)NULL) == -1){

printf("Tpstart failed\n");

exit(1);

}

if ((sndbuf = (char *)tpalloc("STRING", NULL, 0)) == NULL) {

printf("Sendbuf alloc failed !\n");

tpend();

exit(1);

}

if ((rcvbuf = (char *)tpalloc("STRING", NULL, 0)) == NULL) {

printf("Recvbuf alloc failed !\n");

tpfree((char *)sndbuf);

tpend();

exit(1);

}

strcpy(sndbuf, argv[1]);

if(tpcall("TOUPPER", sndbuf, 0, &rcvbuf, &rcvlen, 0)==-1){

printf("Can't send request to service TOUPPER\n");

tpfree((char *)sndbuf);

tpfree((char *)rcvbuf);

tpend();

exit(1);

}

printf("Sendbuf data: %s\n", sndbuf);

Page 37: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 36

printf("Recvbuf data: %s\n", rcvbuf);

tpfree((char *)sndbuf);

tpfree((char *)rcvbuf);

tpend();

}

< svr.c >

#include <stdio.h>

#include <usrinc/atmi.h>

TOUPPER(TPSVCINFO *msg)

{

char *sndbuf;

long sndlen;

if ((sndbuf = (char *)tpalloc("STRING", NULL, 0)) == NULL) {

printf("sendbuf alloc failed !\n");

tpreturn(TPFAIL, -1, NULL, 0, 0);

}

strcpy(sndbuf, msg->data);

sndlen = msg->len;

if(tpacall("TCPSVC1", sndbuf, sndlen, TPNOREPLY)==-1){

printf("Can't send request to service TCPSVC1\n");

tpfree((char *)sndbuf);

tpreturn(TPFAIL, -1, NULL, 0, 0 );

}

tpfree((char *)sndbuf);

tpreturn(TPSUCCESS,0,(char *)msg->data, msg->len,0);

}

TOLOWER(TPSVCINFO *msg)

Page 38: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 37

{

int i;

printf("TOLOWER service is started!\n");

printf("INPUT : data=%s\n", msg->data);

for (i = 0; i < msg->len; i++)

msg->data[i] = tolower(msg->data[i]);

printf("OUTPUT: data=%s\n\n", msg->data);

tpreturn(TPSUCCESS,0,(char *)msg->data, 0,0);

}

< remote.c >

#include <stdio.h>

#include <winsock2.h>

#include <usrinc/commhead.h>

#define SVR_PORT "1.1.1.1:8090"

int main(int argc, char *argv[])

{

int n, msgtype;

long ilen, olen;

char buffer[1024];

char svcname[24];

/* Gateway 에 리모트 노드를 등록한다 */

printf("Remote Service Start...\n\n");

n = ComOpen(TCPIP, "TCPSVC1", SVR_PORT );

if (n < 0) {

perror("Gateway register error:");

return -1;

}

Page 39: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 38

while(1) {

memset(svcname, 0x00, sizeof(svcname));

memset(buffer, 0x00, sizeof(buffer));

/* 데이터를 수신한다. */

n = ComRecv(svcname, &msgtype, buffer, &olen, COMMNOFLAG);

if (n < 0) {

perror("Data Receive error:");

ComClose();

return -1;

}

printf("REMOTE RECV : svcname = [%s]\n", svcname);

printf("REMOTE RECV : len = %d\n",olen);

printf("REMOTE RECV : data= [%s]\n\n", buffer);

/* 응답 데이터를 전송한다. */

strcpy(buffer,"I'M REMOTE SERVICE.");

ilen = strlen(buffer) + 1;

n = ComSend("TOLOWER", COMMDATA, buffer, ilen, COMMNOREPLY);

if (n < 0) {

perror("Data send error:");

ComClose();

return -1;

}

}

/* Gateway 와 연결을 해제한다 */

ComClose( );

}

Page 40: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 39

5.3 리모트 노드 동기형 호출

5.3.1 개요 및 프로그램 내용

SVCGW 가 Tmax 기동시에 boot 되어 있다가 리모트 노드의 요청이 수신되면, 사용자가 지정한 서비스를 호출한 후에 다시 리모트 노드로 처리 결과를 주는 예제이다.

5.3.2 프로그램 구성

Config file : tmax.m, tcpsvcgw.cfg

Remote Node : remote.c

< tmax.m >

*DOMAIN

res SHMKEY = 88000,

MINCLH = 1,

MAXCLH = 1,

TPORTNO = 8888

*NODE

node1 TMAXDIR=”/home/tmax”,

APPDIR=”/home/tmax/appbin”

*SVRGROUP

svg1 NODENAME = node1

*SERVER

tcpsvcgw SVGNAME = svg1,

MIN=1,

MAX=1,

CPC=10,

SVRTYPE=CUSTOM_GATEWAY,

Page 41: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 40

CLOPT=”-- -P 8090 -F /home/tmax/config/tcpsvcgw.cfg –N

20”

svr SVGNAME = svg1, MIN=1, MAX=1

*SERVICE

TCPSVC1 SVRNAME = tcpsvcgw

TOUPPER SVRNAME = svr

< tcpsvcgw.cfg >

#######################################################

# TCP/IP Service Gateway Config #

#######################################################

# gwno ipaddr Tmaxsvc

# 0 1.1.1.1 SVC

#######################################################

# line start with "#" is comment line

# gwno must start at 0 and be increased by 1

# ipaddr: remote node ipaddr

# svc: tmax service name

#######################################################

0 1.1.1.1 TCPSVC1

< svr.c >

#include <stdio.h>

#include <usrinc/atmi.h>

TOUPPER(TPSVCINFO *msg)

{

int i;

char *sndbuf;

printf("TOUPPER service is started!\n");

printf("INPUT : data=%s, len = %d\n", msg->data, msg->len);

Page 42: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 41

for (i = 0; i < msg->len; i++)

msg->data[i] = toupper(msg->data[i]);

printf("OUTPUT: data=%s, len = %d\n", msg->data, msg->len);

tpreturn(TPSUCCESS,0,(char *)msg->data, msg->len,0);

}

< remote.c >

#include <stdio.h>

#include <winsock2.h>

#include <usrinc/commhead.h>

#define SVR_PORT "1.1.1.1:8090"

int main(int argc, char *argv[])

{

int n, msgtype;

long ilen, olen;

char buffer[1024];

char svcname[20];

char *ptr;

/* Gateway 에 리모트 노드를 등록한다 */

printf("Remote Service Start...\n\n");

n = ComOpen(TCPIP,"TCPSVC1", SVR_PORT);

if (n < 0) {

perror("Gateway register error:");

return -1;

}

ptr = argv[1];

ilen = strlen(argv[1]) + 1;

Page 43: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 42

printf("Send Data = [%s], len = %d\n",ptr,ilen);

n = ComSend("TOUPPER", COMMDATA, ptr, ilen, COMMNOFLAG);

if (n < 0) {

perror("Data send error:");

ComClose();

return -1;

}

memset(svcname, 0x00, sizeof(svcname));

memset(buffer, 0x00, sizeof(buffer));

/* 응답 데이터를 수신한다. */

n = ComRecv(svcname, &msgtype, buffer, &olen, COMMNOFLAG);

if (n < 0) {

perror("Data Receive error:");

ComClose();

return -1;

}

printf("REMOTE RECV : svcname = [%s]\n", svcname);

printf("REMOTE RECV : len = %d\n",olen);

printf("REMOTE RECV : data= [%s]\n\n", buffer);

/* Gateway 와 연결을 해제한다 */

ComClose( );

}

Page 44: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 43

5.4 ACK/NAK 통신 방식

5.4.1 개요 및 프로그램 내용

SVCGW 가 Tmax 기동시에 boot 되어 있다가 리모트 노드의 요청이 수신되면, 사용자가 지정한 서비스를 호출한 후에 다시 리모트 노드로 처리 결과를 주는 예제이다. 이 경우에 송수신 데이터에 대해서 ACK/NAK 를 처리하는 예제이다

5.4.2 프로그램 구성

Config file : tmax.m, tcpsvcgw.cfg

Remote Node : remote.c

< tmax.m >

*DOMAIN

res SHMKEY = 88000,

MINCLH = 1,

MAXCLH = 1,

TPORTNO = 8888

*NODE

node1 TMAXDIR=”/home/tmax”,

APPDIR=”/home/tmax/appbin”

*SVRGROUP

svg1 NODENAME = node1

*SERVER

tcpsvcgw SVGNAME = svg1,

MIN=1,

MAX=1,

CPC=10,

SVRTYPE=CUSTOM_GATEWAY,

Page 45: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 44

CLOPT=”-- -P 8090 -F /home/tmax/config/tcpsvcgw.cfg –N

20 -A”

svr SVGNAME = svg1, MIN=1, MAX=1

*SERVICE

COM1 SVRNAME = tcpsvcgw

TOUPPER SVRNAME = svr

< tcpsvcgw.cfg >

#######################################################

# TCP/IP Service Gateway Config #

#######################################################

# gwno ipaddr Tmaxsvc

# 0 1.1.1.1 SVC

#######################################################

# line start with "#" is comment line

# gwno must start at 0 and be increased by 1

# ipaddr: remote node ipaddr

# svc: tmax service name

#######################################################

0 1.1.1.1 TCPSVC1

< svr.c >

#include <stdio.h>

#include <usrinc/atmi.h>

TOUPPER(TPSVCINFO *msg)

{

int i;

char *sndbuf;

printf("TOUPPER service is started!\n");

printf("INPUT : data=%s, len = %d\n", msg->data, msg->len);

Page 46: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 45

for (i = 0; i < msg->len; i++)

msg->data[i] = toupper(msg->data[i]);

printf("OUTPUT: data=%s, len = %d\n", msg->data, msg->len);

tpreturn(TPSUCCESS,0,(char *)msg->data, msg->len,0);

}

< remote.c >

#include <stdio.h>

#include <winsock2.h>

#include <usrinc/commhead.h>

#define SVR_PORT "1.1.1.1:8090"

int main(int argc, char *argv[])

{

int n, msgtype;

long ilen, olen;

char buffer[1024];

char svcname[20];

char *ptr;

/* Gateway 에 리모트 노드를 등록한다 */

printf("Remote Service Start...\n\n");

n = ComOpen(TCPIP,"TCPSVC1", SVR_PORT);

if (n < 0) {

perror("Gateway register error:");

return -1;

}

while(1) {

ptr = argv[1];

Page 47: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 46

ilen = strlen(argv[1]) + 1;

printf("Send Data = [%s], len = %d\n",ptr,ilen);

n = ComSend("TOUPPER", COMMDATA, ptr, ilen, COMMNOFLAG);

if (n < 0) {

perror("Data send error:");

ComClose();

return -1;

}

memset(svcname, 0x00, sizeof(svcname));

memset(buffer, 0x00, sizeof(buffer));

/* ACK/NAK 수신. */

n = ComRecv(svcname, &msgtype, buffer, &olen, COMMNOFLAG);

if (n < 0) {

perror("Data Receive error:");

ComClose();

return -1;

}

if (msgtype == COMMACK)

break;

}

printf("REMOTE RECV : msgtype = %d\n\n",msgtype);

memset(svcname, 0x00, sizeof(svcname));

memset(buffer, 0x00, sizeof(buffer));

/* 응답 데이터를 수신한다. */

n = ComRecv(svcname, &msgtype, buffer, &olen, COMMNOFLAG);

if (n < 0) {

perror("Data Receive error:");

ComClose();

return -1;

}

/* ACK/NAK 송신. */

Page 48: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 47

n = ComSend("TOUPPER", COMMACK, NULL, 0, COMMNOFLAG);

if (n < 0) {

perror("Data send error:");

ComClose();

return -1;

}

printf("REMOTE RECV : svcname = [%s]\n", svcname);

printf("REMOTE RECV : len = %d\n",olen);

printf("REMOTE RECV : data= [%s]\n\n", buffer);

/* Gateway 와 연결을 해제한다 */

ComClose( );

}

Page 49: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 48

6 부 록

6.1 COMMHEAD 파일

#ifndef _COMM_H_

#define _COMM_H_

#ifndef _WIN32

#define __cdecl

#endif

#ifndef _LOBYTE

#if (defined(_SOCK1) || defined(_SOCK11))

#define _LOBYTE 1

#define _HIBYTE 1

#else

#define _LOBYTE 2

#define _HIBYTE 0

#endif

#endif

/* type */

#define TCPIP 1

#define SERIAL 2

/* flags */

#define COMMNOFLAG 0x00

#define COMMDELAY 0x01

#define COMMNOREPLY 0x10

Page 50: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 49

/* msgtype */

#define COMMDATA 1

#define COMMACK 2

#define COMMNAK 3

#define COMMREGISTER 4

#define COMMUNREGISTER 5

define COMM_MSG_SIZE 1024

#define COMM_DATAP(cp) ((char *)((struct comm_header_t *)cp+1))

#define COMM_HEADER_SIZE sizeof(struct comm_header_t)

#define COMM_LEN_SIZE 4

#define COMM_UID_SIZE 5

#define COMM_SVC_SIZE 16

#define COMM_ERRCODE_SIZE 4

struct comm_header_t {

char len[COMM_LEN_SIZE]; /* data length: 순수 데이터 길이 */

char msgtype; /* Message type */

char uid[COMM_UID_SIZE]; /* Unique Value: ACK,NAK 에서 사용*/

char svc[COMM_SVC_SIZE]; /* Destination Id. */

char errcode[COMM_ERRCODE_SIZE]; /* 미사용:차후 사용예정 */

char flags; /* 위에서 지정한 flag 중 하나 */

unsigned char crc; /* Check Byte */

};

typedef struct comm_header_t COMM_HEADER;

#if defined(__cplusplus)

extern "C" {

#endif

/* ------------------ function prototypes ------------------- */

int __cdecl ComOpen(int type, char *id, char *port);

int __cdecl ComDetach(void);

int __cdecl ComClose(void);

int __cdecl ComSend(char *svc, int msgtype, char *data, long len,

long flags);

Page 51: Tmax TCP-IP Service Gateway Guide - 티맥스소프트 -TmaxSoft · 2019-04-09 · Tmax TCP IP Service Gateway Guide 2 Gateway, TCP/IP Service Gateway 이 책에 관하여 … TCP/IP

Tmax TCP IP Service Gateway Guide 50

int __cdecl ComRecv(char *svc, int *msgtype, char *data, long *len,

long flags);

#if defined (__cplusplus)

}

#endif

#endif /* _COMM_H_ */