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
[63426] Re:Re:인디9 서버에서 WriteBuffer 테스트 해봤는데요..
용맨소녀 [doyongid] 905 읽음    2011-01-07 00:35
답변 감사합니다. 써주신 대로 해봤더니 효과가 있는 것 같아요..

근데, WriteStream에서 데이터를 몽땅 카피해온다고 하셨는데요..

그 뜻이 스트림을 임시 버퍼에 복사한 다음 그걸 WriteBuffer 한다는 말씀인가요?

임시버퍼의 사이즈가 꽤 커야할 것 같은데, 사용자 각각마다 있어야 하니까 메모리 사용량이 팍 증가할 것 같기도 하고요.. 아니면 WriteBuffer하기 전에 동적으로 생성했다가 WriteBuffer하고 나면 제거하는 식으로 하면 될까요?


Lyn 님이 쓰신 글 :
: 제가 썼던 방법은....(지금은 Indy를 안쓰지만.. 어쨋든 =_=;;;)
:
: 1. 커넥션마다 Send Thread를 하나 추가로 만듭니다. 그리고 Write용 Stream을 하나 생성합니다
:
: 2. Write할 때는 Stream에 Write 합니다.
:
: 3. SendThread는 Write Stream에 데이터가 있을 경우, WriteStream의 데이터를 몽땅 카피해서 가져 오고 WriteStream을 비웁니다. (물론 락 처리는 필수)
:
: 4. SendThread는 데이터 전송 합니다(아무리 느려도 언젠간 가것거니~ 하고)
:
: 5. 3으로 갑니다.
:
: Ps. Write시 Stream 사이즈가 일정이상 커지면 커넥션 끊어버립니다. 서버 죽으면 안된까
:
: 용맨소녀 님이 쓰신 글 :
: : 클라이언트A 인터넷 속도를 4KB정도로 잡고.. 클라이언트B와 서버는 광랜 속도 그대로 설정했습니다..
: :
: : 서버에서 A,B순대로 200KB 짜리 패킷을 전송했습니다..
: :
: : 그러자 A에 WriteBuffer 할 때 수십초의 대기시간이 발생하더군요.. B의 경우는 순식간에 전송이 끝났고요..
: :
: : 암튼 문제의 A때문에 멀쩡한 B의 패킷 받는 시간이 엄청 느려진거지요..
: :
: : 극단적인 테스트 환경이긴 한데, 암튼 서버를 만들었는데, 이런 현상이 생기면 안될 것 같은데요..
: :
: : 그래서 각 유저별로 타이머 변수를 만들어서 WriteBuffer직전에 User->Timer = timeGetTime() 하고...
: :
: : TTimer를 하나 만들어서 안에다 timeGetTime() - User->Timer 한 값이 5초 정도를 초과하면 강제로 Disconnect()시켰는데, 이것도 금방 되지는 않고 지연되는 시간이 있더라고요..
: :
: : 뭐 좋은 방법이 없을까요?

+ -

관련 글 리스트
63418 인디9 서버에서 WriteBuffer 테스트 해봤는데요.. 용맨소녀 964 2011/01/06
63423     Re:인디9 서버에서 WriteBuffer 테스트 해봤는데요.. Lyn 1047 2011/01/06
63426         Re:Re:인디9 서버에서 WriteBuffer 테스트 해봤는데요.. 용맨소녀 905 2011/01/07
63427             Re:Re:Re:인디9 서버에서 WriteBuffer 테스트 해봤는데요.. Lyn 1066 2011/01/07
63429                 답변 감사합니다.. 용맨소녀 1007 2011/01/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.