목차

XCItComm 가이드

이 화면은 XPlusTcpComm.ocx 컴포넌트에 대한 샘플 화면이다.

XPlusTcpComm.ocx 컴포넌트는 TCP 클라이언트 소켓 기능을 제공하는 컴포넌트이다.

예시

템플릿 위치: /XPLUS/xplus_tcpcomm

템플릿 파일

화면 스크립트

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
// XCltComm 초기화 버튼 클릭 이벤트 처리
function btnInitXCltComm_on_mouseup(objInst)
{
    var nRet;
    var strLogDir = "C:\\xFrame\\log";
 
    /**
     * XCltComm 컴포넌트를 초기화한다.
     * @param nLengthFieldLength 데이터 길이 필드 길이
     * @param nLenIncFlag 길이 필드 계산시 길이 필드 자체 포함 여부 (0 또는 1)
     * @param pLogDir 로그 저장 디렉토리
     * @param pLogFilePrefix 로그 파일 이름
     * @param pLogLevel 로그 레벨("DEBUG"<"INFO"<"WARN"<"ERROR")
     *                  ("DEBUG"로 지정시에만 송수신 데이터 덤프 로그가 기록됨)
     * @param nLogEncFlag 로그 파일 내용 암호화 여부
     * @return
     *  0 : Success
     *  1 : Invalid Length Field Length
     *  2 : Fail to Allocate Memory For Length Field
     */
    nRet = objXPlusTcpComm.innerctrl.InitXPlusTcpComm(strLogDir, "XPlusTcpComm", "DEBUG", 0, "127.0.0.1", fldTcpSvrPortNo.GetText(), 8, 0);
    factory.consoleprint("objXCltComm Return Value = " + nRet);
    if(nRet != 0) {
        screen.alert("objXCltComm Fail, Error Code = " + nRet);
    }
}
 
// 세션 연결 버튼 클릭 이벤트 처리
function btnConnectSession_on_mouseup(objInst)
{
    var strTcpSvrIpAddr = fldTcpSvrIpAddr.gettext();
    var nTcpSvrPortNo = fldTcpSvrPortNo.gettext();
    var nConnectTimeout = fldConnectTimeout.gettext();
 
    /**
     * TCP 세션 연결을 시도한다.
     * @param strTcpSvrIpAddr TCP 연결 대상 서버 IP 주소
     * @param nTcpSvrPortNo 연결 대상 서버 TCP 포트 번호
     * @param nConnectTimeout 연결 타임아웃(단위: 초), 0으로 지정시 기본 소켓 타임아웃 사용
     * @return
     *  0 : OK
     *  1 : Fail To Connect
     *  2 : Fail to Select
     *  3 : Connect Timeout
     *  9 : Not Initialized
     */
    var nRet = objXPlusTcpComm.innerctrl.ConnectSession();
    factory.consoleprint("ConnectSession() Return = " + nRet);
    if(nRet != 0) {
        screen.alert("ConnectSession() Fail, Error Code = " + nRet);
    }
}
 
// TCP 세션 해제 버튼 클릭 이벤트 처리
function btnCloseSession_on_mouseup(objInst)
{
    /**
     * TCP 세션 연결을 해제한다.
     * @return
     *  0 : OK
     *  9 : Not Initialized
     */
    var nRet = objXPlusTcpComm.innerctrl.CloseSession();
    factory.consoleprint("CloseSession() Return = " + nRet);
    if(nRet != 0) {
        screen.alert("CloseSession() Fail, Error Code = " + nRet);
    }
}
 
// 데이터 송신 버튼 클릭 이벤트 처리
function btnSendData_on_mouseup(objInst)
{
    var strSendData = fldSendData.gettext();
 
    /**
     * 연결된 TCP 세션을 통해서 데이터를 송신한다.
     * @param strSendData 송신할 데이터
     * @return
     *  0 : Success
     *  1 : Invalid Parameter
     *  2 : Session is Not Connected
     *  3 : Fail to Send Length Field
     *  4 : Fail to Send Data Field
     *  9 : Not Initialized
     */
    var nRet = objXPlusTcpComm.innerctrl.SendData(strSendData);
    factory.consoleprint("SendData() Return = " + nRet);
    if(nRet != 0) {
        screen.alert("SendData Fail, Error Code = " + nRet);
        var strErrorMsg =  objXPlusTcpComm.innerctrl.GetErrorMsg();
        factory.consoleprint("SendData Fail, Error Msg = " + strErrorMsg);
    }
}
 
 
function btnSendDataAndClose_on_mouseup(objInst)
{
    var strSendData = fldSendData.gettext();
 
    /**
     * 연결된 TCP 세션을 통해서 데이터를 송신한다.
     * @param strSendData 송신할 데이터
     * @return
     *  0 : Success
     *  1 : Invalid Parameter
     *  2 : Session is Not Connected
     *  3 : Fail to Send Length Field
     *  4 : Fail to Send Data Field
     *  9 : Not Initialized
     */
    var nRet = objXPlusTcpComm.innerctrl.SendData(strSendData);
    factory.consoleprint("SendData() Return = " + nRet);
    if(nRet != 0) {
        screen.alert("SendData Fail, Error Code = " + nRet);
        var strErrorMsg =  objXPlusTcpComm.innerctrl.GetErrorMsg();
        factory.consoleprint("SendData Fail, Error Msg = " + strErrorMsg);
    }
 
    objXPlusTcpComm.innerctrl.CloseSession();
}
 
// 수신 데이터 정보 초기화 버튼 클릭 이벤트 처리
function btnClearData_on_mouseup(objInst)
{
    fldRecvDataLength.settext("");
    fldRecvData.settext("");
}
 
// 데이터 송신 타임아웃 시간 지정 버튼 클릭 이벤트 처리
function btnSetSendTimeout_on_mouseup(objInst)
{
    var nSendTimeout = fldSendTimeout.gettext();
 
    /**
     * TCP 세션으로 데이터 송신시 타임아웃을 지정한다.
     * (이 함수를 호출하기 이전에는 내부적으로 기본값으로 10초를 사용하고 있다.)
     * @param nSendTimeout 데이터 송신 타임아웃 (단위: 초)
     * @return
     *  0 : OK
     *  1 : Invalid Timeout
     *  9 : Not Initialized
     */
    var nRet = objXPlusTcpComm.innerctrl.SetSendTimeout(nSendTimeout);
    factory.consoleprint("SetSendTimeout Return = " + nRet);
    if(nRet != 0) {
        screen.alert("SetSendTimeout Fail, Error Code = " + nRet);
    }
}
 
// 로그 기록 여부 플래그 설정 버튼 클릭 이벤트 처리
function btnSetLogFlag_on_mouseup(objInst)
{
    var nLogFlag = fldLogFlag.gettext();
 
    /**
     * 로그 기록 여부를 지정한다.
     * @param nLogFlag 로그 기록 여부 (1: 로그 기록, 0: 로그 기록 안함)
     * @return
     *  0 : OK
     *  9 : Not Initialized
     */
    var nRet = objXCltComm.innerctrl.SetLogFlag(nLogFlag);
    factory.consoleprint("SetLogFlag Return = " + nRet);
    if(nRet != 0) {
        screen.alert("SetLogFlag Fail, Error Code = " + nRet);
    }
}
 
// 현재 연결 상태 조회 버튼 클릭 이벤트 처리
function btnIsConnected_on_mouseup(objInst)
{
    /**
     * 세션 연결 상태를 구한다
     * @return
     *  0 : 세션 해제 상태
     *  1 : 세션 연결 상태
     */
    var nRet = objXPlusTcpComm.innerctrl.IsConnected();
    fldIsConnected.settext(nRet);
}
 
/**
 * TCP 세션 해제 이벤트를 처리한다.
 * CloseSession 함수 호출시에는 이벤트가 발생하지 않는다.
 * @param objInst XPlusTcpComm 오브젝트
 * @param nEvent 세션 해제 원인 코드
 * @param pMsg 세션 해제 오류 메시지
 */
function objXPlusTcpComm_OnClose(objInst,nEvent,pMsg)
{
    screen.alert("objXPlusTcpComm_OnClose> nEvent = " + nEvent + ", " + pMsg);
}
 
/**
 * 데이터 수신 이벤트 처리
 * @param objInst XPlusTcpComm 오브젝트
 * @param nLength 수신한 데이터 길이
 * @param pDataKey 수신한 데이터에 대한 Key값, GetData 함수에서 사용됨
 */
function objXPlusTcpComm_OnReceive(objInst,nLength,pDataKey)
{
    factory.consoleprint("nLength = " + nLength);
    factory.consoleprint("pDataKey = " + pDataKey);
 
    fldRecvDataLength.settext(nLength);
 
    /**
     * 실제 수신된 데이터를 구함
     * @return strRecvData 수신한 데이터
     */
    var strRecvData = objXPlusTcpComm.innerctrl.GetData(pDataKey);
    factory.consoleprint("RecvData = " + strRecvData);
    fldRecvData.settext(strRecvData);
 
    return;
}