C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[73769] Thread를 사용한 Idtcpclient 수신부 만들기가 문제가 있네요
초초초보 [] 4515 읽음    2016-07-26 10:07
제목처럼 IdTcpclient 컴포넌트를 사용해서 장비와 PC간에 통신을 하려고 합니다.

PC에서 송신하고 장비를 통해서 리턴을 받는것 까진 확인을 했습니다.

문제는 수신부인데 단일로는 확인을 했지만 지속적으로 모니터링 해야하기에 Thread를 사용하려합니다.

Thread에서 버퍼에 데이터가 있는지 체크하고 있으면 윈도우 메시지를 사용해서 전달하는 방법으로 구현을 했는데

데이터 수신이 한번만 오더라도 소켓의 데이터를 읽지 않으면 계속 윈도우 메시지가 날라오는 문제가 있습니다.

이런 구조는 문제가 있는것 같아서 다른 시리얼 통신 소스코드를 봤더니 WaitCommEvent 함수를 사용해서 데이터가 수신될때만 처리하도록 했더군요.

데이터 사이즈가 메시지를 보낼 조건을 수신버퍼의 사이즈가 바뀔때로 조건을 바꾸는것도 생각해봤는데 이건 문제 읽기랑 같이 쓰다보면 문제가 있을듯 하구요.....

고수님들의 조언부탁드립니다.

아래는 제가 만든 수신 Thread 입니다.

void __fastcall sockCthread::Execute()
{
	//---- Place thread code here ----
	IdTCPClient1->ReadTimeout = 100;
	while(!Terminated)
	{
		if (IdTCPClient1->Connected())
		{
			if (!IdTCPClient1->IOHandler->InputBufferIsEmpty())
			{
				PostMessage(m_hWnd, WM_COMM_ETHERNET, 0, 0);
			}
		}
	}
}


+ -

관련 글 리스트
73769 Thread를 사용한 Idtcpclient 수신부 만들기가 문제가 있네요 초초초보 4515 2016/07/26
73773     Re:Thread를 사용한 Idtcpclient 수신부 만들기가 문제가 있네요 정성훈.해미 5073 2016/07/27
73793         Re:Re:Thread를 사용한 Idtcpclient 수신부 만들기가 문제가 있네요 초초초보 5136 2016/08/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.