Q&A

  • VC6++ 소켓 클라이언트 와 델파이 서버 소켓 을 통한 파일 전송문제..
안녕하세요!!

소켓으로 파일(TEXT 파일) 송수신 하는데
어려움이 있이 도움 요청 드립니다.

해법이 있으면 답글 부탁 드립니다.

   === >> 환경 <<===
1. 현            상 : 서버에서 보낸 자료를 클라이언트에서 모두 수신 하였으나
                      클라이언트 수신 while 루프를 빠져 나오지 못하고
                      클라이언트 프로그램이 얼어버림 (무한 루프 돌지는 않음) .
2. 클라이언트 소켓  : VC6++ 의 CDataSocket 으로 수신 구현
3. 서버 소켓        : 델파이 자체 소켓(TServerSocket >> delphi 5 버전)
4. 클라이언트 주요 수신 소스 :
       - nReceiveLen  : 수신길이 , nTotalLen : 받을 파일 사이즈
       - destFile     : CFile 객체          
       do
        {                  
                dwRead = m_pView->m_pSoc->Receive(data, 4096);
                destFile.Write(data, dwRead);
                nReceiveLen += dwRead;
                if ((nReceiveLen >= nTotalLen) || (dwRead == 0)){
                        break; << 이 소스가 실행 되도 LOOP를 못빠져 나와
                             플그램이 얼어 버림 (loop 도 돌지 않으면서 얼어 버림)
                }
                
        } while (dwRead > 0);
5. 서버 전송 소스 :
            Try
              FileName := 'aaa.txt';
              FileStream := TFileStream.Create(FileName,fmOpenRead);
              FileStream.Position:=0;
              BeSend := Server.Socket.Connections[0].SendStream(FileStream);
              sSenddata := FileName + ' 파일 전송 OK';
            Finally
               Server.Socket.Connections[0].SendText('파일 전송 완료');
               // FileStream.Free; << 이부분은 에러가 발생되어 소스 막음
                                    (별문제는 없었음)
            end;
            



2  COMMENTS
  • Profile
    델짱 2004.08.27 19:06
    최용일님 답변 감사 드립니다

    주신 말씀은 전송시 CR + LF 를 붙혀서 보내라고 하셨는데 .

    아래쪽 소스를 보면

    보내는 쪽은 파일 스트림으로 한번에 보내는 구조라

    CR +LF 를 붙혀서 보낼수 없을 것 같은데 ..

    제가 잘 못 알고 있는 건가요?

    그럼 수고 하세요..!!

    // ===== 파일 전송 부분소스 ===========//
    BeSend := Server.Socket.Connections[0].SendStream(FileStream);
    << 한방에 날려 버림.
    // ===== 파일 전송 부분소스 ===========//

  • Profile
    최용일 2004.08.27 03:43
    안녕하세요. 최용일입니다.

    VC에서 어떻게 받는것인가는 설명이 안되어 있어서 확실히는 잘 모르겠지만....

    보내실때 맨 끝에다가 Carrage Return이나 Carrage Return + Line Feed를 붙여서 보내보세요...

    ^^ 항상 즐코하세요...