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
[35153] 제목] TCPClient 가 데이타를 받을 때... 잘 안받아지는 현상.
초록물고기 [] 1542 읽음    2004-05-23 16:41
안녕하세요... 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 가 데이타를 받을 때... 잘 안받아지는 현상. 초록물고기 1504 2004/05/24
35178             Re:Re:Re:제목] TCPClient 가 데이타를 받을 때... 잘 안받아지는 현상. 윤승일 1618 2004/05/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.