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
[22997] Re: 패킷 사이즈가 너무 작은게 문제군요..
김상구.패패루 [peperu] 1401 읽음    2002-12-04 11:16
단순 합산으로는 250*240 = 60,000 byte = 480,000 bit니까 480kbps의 대역폭만 가지면 됩니다. 전혀 문제될게 없어보이지만 문제는 각각의 패킷 사이즈가 250byte밖에 안되는게 문제군요.
이렇게 보낼경우 약 1Mbps의 대역폭이 필요하게 됩니다.
제 생각에 가장 좋은 방법은 보내는쪽에서 버퍼링을 해야 할 것 같군요. 물론 데이터 압축도 좋은 방법이긴 하지만 일반적인 허프만방식의 압축은 4000바이트 이하에선 효과가 없습니다.
매번 250byte씩 send를 하지 마시고 버퍼를 하나 잡아서 일정 수준 이상으로 데이터가 누적될 때 한 번씩 send하게 하시면 더 안정적으로 데이터를 전송하고, 또 수신할 수 있습니다.
recv에서는 버퍼링이 필요 없습니다. 소켓 자체적으로 버퍼링이 되기 때문에 단순히 250byte씩 끊어서 읽어주기만 하면 되죠.
물론 비상사태(접속이 끊긴다든지.., Timeout이 걸린다든지..)에 대처할 수 있는 안전장치들을 꼭 마련하셔야 할겁니다. 스트레스테스트도 거쳐야 하구요.

소켓이라는게.. 결국 이런게 힘들죠. 그냥 단순 채팅 데모는 너무너무 쉽지만 혹독한 환경에서 안정적으로 동작하게 하려면 정말 신경을 많이 써야 합니다.



혼불 님이 쓰신 글 :
: 80byte 크기의 데이터(구조체로 정의된...)를 1초마다 약 120개~ 최대 240개까지를 받을려고 하는데요....
:
: 문제는 20여개 정도만 올려도 프로세서의 모든 처리가 데이터를 받아서 DB에 저장하는 데로만 집중이 되어...
:
: 다른 작업을 전혀 할수가 없게 됩니다....
:
: 지금은 일단 80byte의 크기지만, 후에는 약 250byte크기의 데이터를 1초마다 최대 240개까지 받아서 DB에 저장을 하고.
:
: 저장된 데이터를 표현해야하는데 이렇게 많이 올라오는 데이터를 처리하는 좋은 방법이 없을까요?
:
: 참고로 이렇게 올라오는 데이터는 약 1개월에서 3개월동안 지속적으로 올라오게 됩니다....
:
: 데이터의 100%신뢰성있게 받을수가 있어야 하구요....
:
: 그럼 고수님의 조언을 기다리겠습니다....
:

+ -

관련 글 리스트
22990 소켓 프로그래밍에 대한 질문입니다. 혼불 705 2002/12/04
22997     Re: 패킷 사이즈가 너무 작은게 문제군요.. 김상구.패패루 1401 2002/12/04
22992     Re:소켓 프로그래밍에 대한 질문입니다. 유영인.Chris 784 2002/12/04
23020         Re:Re:소켓 프로그래밍에 대한 질문입니다. 주희 646 2002/12/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.