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
[35169] Re:Re:제목] TCPClient 가 데이타를 받을 때... 잘 안받아지는 현상.
초록물고기 [] 1503 읽음    2004-05-24 19:01
답변 감사합니다.
DataAvaialbe event 란 것이... 그런 프로퍼티가 있는 것인지,,, 아니면 다른 일반적인 ...
onconnect, OnExecute 등을 통털어 말 씀하시는 것인지요?

말씀 하신 event drive방식 말고,, 제가 했던 리눅스 프로그램처럼...
컴포넌트를 사용하지 않고 , 그렇게 루프를 돌면서..데이타를 받을 수 있는 방법은 없는지요?
그럴수 있다면,, 간단히 참고 할 수 있는 ... example 소스 같은 것좀 구할 수 있는지요?

답변 다시 한번 감사드리며..

윤승일 님이 쓰신 글 :
: 리눅스 클라이언트는 Event Driven 방식이 아니므로 아래처럼 while 루프로 받는 것이 맞지만.
: indy component는 event driven 방식으로 써야 합니다.
: DataAvailable event가 떠야 받을수 있는데 쓰신 코드를 보면 click event 내에서 while loop로 계속
: 돌고 있으니...  DataAvailable event 가 발생하지 않으므로 데이터를 받지 못합니다.
:
:
: 초록물고기 님이 쓰신 글 :
: : 안녕하세요... tcp /ip 에서 궁금한 점이 있어 질문드림니다.
: : 서버프로그램은  리눅스 에서 실행되는 tcp 서버입니다.
: : 서버의 구조는 클라이언트와 connection 이 이루어진후...
: : 데이타를 계속해서 보내는 그런 간단한 구조입니다.
: :
: : 당연히 클라이언트 접속이 이루어지는 데이타를 계속해서 받아들이는 구조의 client 입니다.
: : 아래의 client 프로그램은  tcp서버에 접속하여... 데이타를 계속 받아들이면서...
: : 계속해서 잘 돌아갑니다.
: :
: : C++ builer에서도 특정 버튼이 눌린후에 ...데이타를 받기위해
: : 아래의 indy client example에서 처럼.. 아래와 같이 간단히 코드를 삽입했습니다.
: : 콤포넌트는 TidTCPClient 입니다.
: :
: : 그런데 데이타를 한번도 못 받아 냅니다.
: : 분명 아래와 같은 구조를 하고 있는 리눅스 client는 데이타를 모두 잘 받아 냅니다.
: : ReadLn 과 비슷하게, ReadString함수도... 데이타를 못 읽어내는 현상이 나타남니다.
: :
: : 리눅스 client와 TCPClient사이에 어떤 차이점이 있어 , 잘 받아지지 않는 것인지요.
: : 아니면.. 특별히 주의해야 할 것이있는지요?
: :
: :
: : ========= 버튼이 눌렸을 동작하는 TCPClient ============
: : void __fastcall TForm2::btnGoClick(TObject *Sender)
: : {
: :
: :    TCPClient->Connect();
: :    TCPClient->Write("client connedted");
: :  
: :    while (1)
: :     {
: :      try
: :      {
: :           ListBox1->Items->Add(TCPClient->ReadLn());
: :      }
: :      __finally
: :      {
: :           TCPClient->Disconnect();
: :      }
: :    }
: : }
: :
: :
: : //////////리눅스에 동작하는 서버의 구조 //////////
: : main()
: : {
: :   int count = 0;
: :   char buf [128];
: :
: :   //클라이언트와 connection 이후  계속해서 데이틀 클라이언트에 보낸다.
: :   read(...)  //==> "client connected" 라는 문자열이 처음에 ..읽혀진다.
: :   while ( 1) //그이후 데이타를 무한히 보내려 합니다.
: :   {
: :        sprintf( buf , "message = %04d\n" , count ++ );
: :        send (sock, buf , strlen(buf), 0); ////연결된 클라이언트에 0.1 정도 간격으로계속해서 보냅니다.
: :
: :        usleep (100)
: :   }
: : }
: :
: : ====리눅스에서 동작하는 tcp client 구조..===
: : int main(int argc, char **argv)
: : {
: :
: :         int client_len;
: :         int clientSock;
: :         int first = 0;
: :         int n;
: :
: :         pthread_t sndThread , rcvThread;
: :         void *threadResult;
: :
: :         FILE *fp_in;
: :         char id [512];
: :
: :
: :         struct sockaddr_in clientaddr;
: :         sprintf (Name, "%s", argv[3] );
: :
: :         clientSock = socket(AF_INET, SOCK_STREAM, 0);
: :         clientaddr.sin_family = AF_INET;
: :         clientaddr.sin_addr.s_addr = inet_addr(argv[1]);
: :         clientaddr.sin_port = htons( atoi (argv [2]) );
: :
: :         client_len = sizeof(clientaddr);
: :
: :         if (connect(clientSock, (struct sockaddr *)&clientaddr, client_len) < 0)
: :         {
: :                 perror("Connect error: ");
: :                 exit(0);
: :         }
: :         while (1)
: :         {
: :                 memset ( id , '\0' , sizeof ( id ) ) ;
: :                 n = read ( clientSock , id , 512);
: :                 if ( n == -1 ) return (void *) NULL;
: :                 id [n ] = '\0';
: :                 fprintf (stderr, "recv = [%s]\n" , id );
: :
: :         }
: :         exit(0);
: : }
: :
: :

+ -

관련 글 리스트
35153 제목] TCPClient 가 데이타를 받을 때... 잘 안받아지는 현상. 초록물고기 1542 2004/05/23
35173     Re:제목] TCPClient 가 데이타를 받을 때... 잘 안받아지는 현상. 김상면 1552 2004/05/24
35168     Re:제목] TCPClient 가 데이타를 받을 때... 잘 안받아지는 현상. 윤승일 1553 2004/05/24
35169         Re:Re:제목] TCPClient 가 데이타를 받을 때... 잘 안받아지는 현상. 초록물고기 1503 2004/05/24
35178             Re:Re:Re:제목] TCPClient 가 데이타를 받을 때... 잘 안받아지는 현상. 윤승일 1618 2004/05/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.