네글(Nagle) 알고리즘 문제가 의심되는데요...
일단 이 글을 먼저 읽어보세요.
(구글에서 검색할때 처음 나오길래 링크를 붙입니다)
http://egloos.zum.com/depiness/v/772710
결론은, 시간을 손해보고 대역폭을 취하는 알고리즘.
윈도 시스템은 TCP통신에 이게 기본적으로 켜져있습니다.
winsock을 직접 쓸 경우는 setsockopt() 로 TCP_NODELAY 를 켜주면 이 기능이 꺼집니다.
(대신 자잘한 패킷이 늘어나 전체적으로 트래픽이 증가하겠지요)
TServerSocket, TClientSocket 에서 해당 옵션을 어떻게 변경하는지는 안써봐서 모르겠네요.
밑에분이 답변해주실겁... ^^
추천하지는 않지만, 시스템 전역적으로 꺼버리는 방법도 있습니다.
https://www.howto-connect.com/enable-disable-nagles-algorithm-windows-10/
SHAWN 님이 쓰신 글 :
: 안녕하세요.
:
: TServerSocket관련하여 조언또는 노하우를 구하고자 글을 올립니다.
:
: 현재 장비 프로그래머로서 일하고 있습니다.
:
: 사용하는 툴은 c++builder 6(Boland) 구요.
:
: 비전 시스템과 통신중 한번씩 정해진 패킷의 2~5배가 되는 패킷이 들어오는 경우가 발생합니다.
: (검사 환경은 비전시스템이 인스펙션을 하는 즉시 바로 데이터를 보냅니다. 그저 저희 쪽에서는 처리만 할 뿐입니다. 핸드쉐이킹 방식이 아닙니다.)
:
:
: 그래서 2~3초의 딜레이가 발생한후 데이터가 들어오는데
:
: 제 생각은 무언가가 데이터를 모아서 한번에 보내는거 같습니다.
:
: 랜 케이블도 교체 해보았지만 현상은 같네요...
:
: 지금 제가 생각하는 솔루션은
:
: 1. 인디소켓으로 바꾼다.
: (인디 소켓이 일반 소켓보다 더 데이터를 빠르게 즉시 처리할수 있는지??)
:
: 2. 랜카드를 고성능으로 바꾼다.
: (혹시 추천하실만한 랜카드 있으신지??)
:
: 혹시 위의 제가 생각한 솔루션에대한 조언이 있으신지 여쭙고자 합니다.
:
: 마지막으로 혹시 네트웍 트래픽 관련하여 효율적으로 모니터링 할 수 있는 방법이 있나요??
:
: 감사합니다.
:
: 오늘하루도 수고하세요.