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
[60491] Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ
수문장 [iskim71] 1873 읽음    2010-03-18 09:47
너무나 많은 경우의 수가 많아서 뭐라 딱 찍을 수는 없지만, 한 가지 생각나는게 있어 말씀드립니다.

단순히 시리얼->TCP 컨버터를 사용하는 것이 아니라 장비 자체에 TCP소켓이 있어 이를 통해 데이터를

받는 것이라면, 동기화 문제일 수도 있습니다.

장비 업체에서 TCP를 직접 개발해서 사용하는 경우가 있는데, 이것이 간혹 문제를 일으키곤 하지요.

PC쪽 프로그램의 프로세스 우선순위를 실시간으로 해놓고 받아보세요.

그렇게 해서 받아진다면 장비업체와 이야기를 좀 하셔야 할 듯 합니다.

그리고 윗분 말씀대로 'Wireshark' 같은거 하나 설치해서 보시면 금방 답이 나올듯 합니다.

사루짱 님이 쓰신 글 :
: 안녕하십니까.. 씨빌더 한지 얼마 안된 완전 초짜가 답답해서 이렇게 질문을 드립니다. ㅜㅜ
:
: 우선 장비에서 16Kbyte정도의 사진파일을 전송해주는데요. 이게 중간에 올라오다가 패킷이 잘리는것 같습니다.
: 원래 장비는 serial통신을 하는데 중간에 컨버팅 되어서 TCP통신으로 바껴서 올라오는 패킷입니다.
: 장비에서는 1Kbyte단위로 잘라서 보낸다고 함(<-이건 확인을 할 방법이 없어서 ㅜㅜ)
:
: 검색을 해보니 TCP통신 특성상 패킷크기가 네트워크 상황에 따라서 다르게 날라와서 그걸 안정적으로 받기 위해서
: 스레드를 사용해서 받아야 한다고 들었는데요 (<-이것도 맞는지 잘 모르겠네요 ㅜㅜ)
:
: 8Kbyte이하의 메세지 같은 경우는 이상 없이 처리가 되는데요
: 큰용량의 파일이 올라오면 CRC체크까지 가지도 않는것으로 봐서
: 중간에 대기를 타는 거 같기도 하거든요.
:
: 그리고
: OnClientRead 함수가 데이터 처리중에 몇번 호출되는걸로 봐서 TCP에서 기본적으로 패킷 길이가 길면 스레드를 생성해서 처리를 해준다고 들었는데요 (<- 이것도 그냥 검색하다 본거라서 확실히 모르겠네요.)
:
: 너무 개념적으로도 모르는게 많아서 이것저것 궁금한거 다적다 보니 말이 이상해졌는데요.
: 핵심내용만 적으면요..
:
:   - TCP통신을 할때 대용량의 패킷을 안정적으로 받으려면 어떤식으로 하는것이 좋은지 알려주셨으면 합니다.
:   - 밑에 소스에서 통신상에 어떤 문제가 있는지 좀 지적 해주셨어면 합니다.
:
: 고수님들의 관심어린 답변 부탁드립니다 ㅜㅜ
:
: void __fastcall TfrmMain::OnClientRead(TObject *Sender,                     //<-처음 패킷을 받는 함수같은데요.
:       TCustomWinSocket *Socket)
: {
:     IsMemory(Socket);
:     IsErrorMsg(ReadClientData(Socket),"ReadClientData");
: }
:
: Error_Code TfrmMain::ReadClientData(TCustomWinSocket *pClientSocket)
: {
:
:      IsSocketEx(pClientSocket);
:      uchar* tmpData;
:
:      uint16 nDataLen = 0;
:      uint16 nIndex = 0;
:
:      IsErrorEx((Error_Code)FindSocketIdx(pClientSocket, &nIndex));
:
:      nDataLen = pClientSocket->ReceiveLength();
:
:      tmpData = (unsigned char *)malloc(nDataLen * 2 + 10);
:
:      pClientSocket->ReceiveBuf(tmpData, nDataLen);
:
:      //데이터 처리부분
:        ....
:        ...
:
: }

+ -

관련 글 리스트
60473 TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 사루짱 1718 2010/03/17
60491     Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 수문장 1873 2010/03/18
60494         Re:Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 사루짱 1665 2010/03/18
60498             Re:Re:Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 수문장 2016 2010/03/18
60474     Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 장성호 1631 2010/03/17
60475         Re:Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 사루짱 1484 2010/03/17
60476             Re:Re:Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ Nibble 1818 2010/03/17
60482                 Re:Re:Re:Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 넘초보 2168 2010/03/17
60497                     Re:Re:Re:Re:Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 사루짱 1603 2010/03/18
60605                         Re:Re:Re:Re:Re:Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 넘초보 2052 2010/03/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.