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
[60474] Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ
장성호 [nasilso] 1631 읽음    2010-03-17 11:55
음...
개인적으로  network는 잘 모르지만...


장비에서 serial 로 수신해서 중간에 tcp로 convert해서 전송해 준다고 했는데...
그 부분에 문제가 있지 않나 하는 생각이 드네요

16kbyte정도면 대 용량도 아니구..
tcp가 패킷이 깨어진다는 얘기도 별루 못들어 봤구..

제 생각엔 serial통신쪽에서 data가 문제가 있지 않을까 합니다.


그리고 님께서 사용하신 component가 TClieltSocket인것 같은데..
대부의 socket컴포넌트는 내부적으로  송수신을 thread를 이용해서 처리하고 있습니다.
님께서 따로 해주지 않아도 이미  그렇게 만들어져 있는것입니다.

그럼..


사루짱 님이 쓰신 글 :
: 안녕하십니까.. 씨빌더 한지 얼마 안된 완전 초짜가 답답해서 이렇게 질문을 드립니다. ㅜㅜ
:
: 우선 장비에서 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통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 사루짱 1719 2010/03/17
60491     Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 수문장 1874 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통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 사루짱 1485 2010/03/17
60476             Re:Re:Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ Nibble 1819 2010/03/17
60482                 Re:Re:Re:Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 넘초보 2169 2010/03/17
60497                     Re:Re:Re:Re:Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 사루짱 1603 2010/03/18
60605                         Re:Re:Re:Re:Re:Re:TCP통신 대용량 패킷이 올라오다가 중간에 짤려요 ㅜㅜ 넘초보 2053 2010/03/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.