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
[42663] Re:Re:넌블럭킹 소켓 프로그래밍
마술감자 [magicpotato] 2264 읽음    2005-11-25 09:55
움.. 사이트에 갔는데 Indy9, 10밖에 없네요..
제가 가진 빌더가 5라서 인디가 없습니다.

그리고 recv()를 사용해서 100 바이트 받는데 체감적인 블럭킹은 일어나지 않습니다.
아마 블럭킹 모드의 소켓에 무조건 Recv()를 호출하는 방식으로 코딩하신것 같은데
실제로는 소켓을 그렇게 사용하지 않습니다.

넌블럭 소켓 프로그래밍과 select()에 대해서 찾아보시기 바랍니다.


박영목 님이 쓰신 글 :
: 답변 감사요.... ㅋㅋㅋ
: 8.0.25에 C+Builder에 기본으로 포함되어 있는 것입니다.
:
: 오늘 해 보니 num = IdTCPClient1->Binding->Recv( buff, 100, 2 );   Blocking 일어나내요....
:
: 물론 어떤 Data가 조금 이라도 있으면 그냥 지나 가는 것으로 보입니다....  어떻게
:
: 이것으로 해보려고 합니다. 처음에 길이 보내고 그 길이 올 때까지 기다리고.... 뭐 그렇게....
:
:
:
:
: 마술감자 님이 쓰신 글 :
: : 전 인디를 모릅니다.
: : 그래서 인디10용 도큐먼트를 받아서 해당 프로퍼티와 메소드를 찾았는데 나오지 않네요
: : 버전을 알려주시면 한번더 보도록 하겠습니다.
: :
: : 참고로 URL은..
: : http://www.indyproject.org/Sockets/Docs/
: :
: :
: : 박영목 님이 쓰신 글 :
: : : 저번에는 쓰레드를 돌려서 ReadBuffer으로 한 것으로 생각됩니다. 이게 블럭킹이 되니까?
: : : 그런데 오늘간단히 쓸 일이 생겼는데.... 나원 값을 서버에 보내고 바로 받을 일이 생겼는데...
: : : 그냥 타이머 정도....  생각보다 짜쯩 나네요....  현재 수신된 길이만 알면 블럭킹은 아무것도 아닌데...
: : : 그런데...  수신 버퍼를 지울 수만 있으도 귀찮게 할 수 있을 것 같은데...
: : : 무론 계속 빠른속도로 올 때는 수신 버퍼 지우는게... 영 불안하지요...
: : :
: : : 그런데.... 아래와 같이 하면 귀찮게 받아냅니다.  ㅋㅋㅋㅋ 그런데... 찝찝합니다. 2번 읽기 때문에...
: : : 
: : : char buff[100];
: : : int num;
: : :
: : :     num = IdTCPClient1->Binding->Recv( buff, 100, 2 );   // MSG_PEEK
: : :
: : :     if( num )
: : :     {
: : :        IdTCPClient1->ReadBuffer( buff, num );
: : :         buff[num]=0x00;
: : :         Memo1->Lines->Add( buff );
: : :     }
: : :
: : :   위 방법은 삽질로 알아낸 것이데... Data 정말 잘 받아냅니다. 물론 블럭 현상도 없고... ㅋㅋㅋ
: : :  위의 Recv는 값을 가지고 오는 데 버퍼를 지우는 기능이 없네요...
: : :  그래서 아래의 ReadBuffer에서 버퍼를 지우기 위해 또 호출합니다....
: : :
: : : 2번 읽기 프로그래머로써 짜쯩 납니다. 그래서.... 밤을 세웠습니다.... 이제 자야지ㅣ...
: : :
: : : 누가 아침에 답을 좀 주려나....  ReadLn WriteLn 이런 것은 월래 잘 되는 편이지요...
: : : 그런데.... 바이너리로 받고 보내고 할 때는 귀찮아서....
: : :
: : : 아참에 보시지요......   꽈~~당..... 잠 ... 온... 다........  수신 길이... 아는 방법.....? 으으으,,,,

+ -

관련 글 리스트
42607 [질문] 인디에서 수신 길이는? 아니 수신 Buffer 지우는 방법은???? 박영목 1010 2005/11/23
42633     인디 버전 몇인가요? 마술감자 863 2005/11/24
42648         Re:인디 버전 몇인가요? 박영목 973 2005/11/24
42663             Re:Re:넌블럭킹 소켓 프로그래밍 마술감자 2264 2005/11/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.