XCItComm 가이드

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

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

템플릿 위치: /XPLUS/xplus_tcpcomm

템플릿 파일

// 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;
}

  • guide/xplus/xplus_tcpcomm.txt
  • 마지막으로 수정됨: 2023/05/11 16:21
  • 저자 127.0.0.1