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
[39944] Re:[질문]이런경우는 어떻게(소켓으로 받은경우...)
황경록 [mpbox] 858 읽음    2005-04-27 13:57
하안인 님이 쓰신 글 :
: tcp/ip로 데이타를 전송하는 경우에
: 데이타를 받은후 그 데이타를 가지고 퀴리를 해야 할경우 그 퀴리하는 시간이
: 5초정도 걸린다고 가정하면 그 안에 다시 데이타가 전송되어 왔을때
: 그 데이타를 받아들일수 있나요..
:
:
: void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
:       TCustomWinSocket *Socket)
: {
:   .....
:   이부분에서 데이타를 퀴리해서 다시 재전송해야 할경우
: ...
: }
:
: 위 작업이 끝나기 전에 소켓은 데이타를 받은 경우 그 데이타값을 큐같은 곳에 저장해서
: 끝난 다음에 실행되는지....

기본적으로 Windows Socket 의 TCP IP Stack 의 Receive Buffer 에 데이터가 저장되고 데이터가 도착하면
Event 가 발생되어 그 데이터를 사용자에게 읽으라고 알려줍니다.

Receive Buffer 는 Ring Buffer 로 구현되어 있을 것 같고,  Read 함수에서 읽어간 만큼의 포인터가
옮겨 질 듯 합니다.

암튼 -_- 그냥 제가 볼땐 읽은 데이터는 따로 저장하고 이를 처리하는 쓰레드를 생성하는게 바람직하다고
보입니다만...

그리고 OnRead 말고 Reading 쓰레드를 따로 생성하는 것이 좋을 듯 합니다.

:
: 백업쓰레드로 돌려야 하는것인지...
:
: 도움을 구합니다.

+ -

관련 글 리스트
39942 [질문]이런경우는 어떻게(소켓으로 받은경우...) 하안인 777 2005/04/27
41862     Re:[질문]이런경우는 어떻게(소켓으로 받은경우...) 땅주인 983 2005/09/08
39944     Re:[질문]이런경우는 어떻게(소켓으로 받은경우...) 황경록 858 2005/04/27
39946         Re:Re:[질문]이런경우는 어떻게(소켓으로 받은경우...) 하안인 860 2005/04/27
39947             Re:Re:Re:[질문]이런경우는 어떻게(소켓으로 받은경우...) 황경록 1163 2005/04/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.