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
[43362] Socket->SendText 를 하면 소켓 연결이 끊어 지네요..
이윤성 [grin79] 1121 읽음    2006-01-18 19:38
서버는 되어있고 클라이언트 부분만 작성 중입니다.

접속이랑 다 잘되는데 SendText 를 하면...전송 하고 나서
Disconnect 가 발생 하게 됩니다.
물론 Dixconnect 하기 전에 서버로 부터 data 는 받고 나서 Disconnect 를 발생하는데 이유를 잘모르겠네요..

sendText 가 너무 길어서 나는 메세지인지는 모르겠는데 짧은 data 는 이상없이 잘가는데
길게 하면..전송 하고 받고 나서 DixConnect 가 됩니다.
에러 처리를 안해서 그런건지...잘모르겠네요.

버튼 클릭시
void __fastcall TTrace::TntButton1Click(TObject *Sender)
{
         ///////////////////////////
        srtHtt->Clear();
        strContent = "M=0&W=";
        strContent += "Apple" ;
        strTranDict.Empty();
        tranServiceType ="512";
        strSourceCulture = "EN-US";
        strTargetCulture = "KO-KR";
        strContentLength = IntToStr( strContent.Length());
        srtHtt->Clear();
        srtHtt->Add("POST /LniWTS HTTP/1.0");
        srtHtt->Add("Accept: text/*");
        srtHtt->Add("Content-Type: text/html; charset=utf-8");
        srtHtt->Add("Host: " + m_strWebIP);
        srtHtt->Add("B: 0");
        srtHtt->Add("D: " + strTranDict);
        srtHtt->Add("R: ");
        srtHtt->Add("I: " + m_strUserID );
        srtHtt->Add("E: " + tranServiceType);
        srtHtt->Add("S: " + strSourceCulture );
        srtHtt->Add("T: " + strTargetCulture  );
        srtHtt->Add("Content-length: " + strContentLength );
        srtHtt->Add("");
        srtHtt->Add( strContent);
        Send =   srtHtt->Text;
        SendText = UTF8Encode(Send) ;
        this->ClientSocket->Socket->SendText(SendText);

}
이렇게 메세지 보냅니다. SendText  만 AnsiString 이고 나머지는 WideString 입니다.
srtHtt 는 tmtStringList 로 했고.. TTntStringList *srtHtt;
단문을 보내면 되지만..저렇게 다보내면 문제가 발생하네요.. 혹시나 길이가 길어서 문제가 발생하나요?
그렇다면..그냥 끊어지면 몰라도 소켓 전송하고 data 를 받고 나서 끊어지거등요.

void __fastcall TTrace::ClientSocketRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
       ReadText = Socket->ReceiveText();
       Trance();
}
void __fastcall TTrace::Trance()
{

        ResultText  =  UTF8Decode(ReadText) ;
        int count;
        count = ResultText.Pos("LniMsg: ERR_SUCCESS");
        ResultText.Delete(1,count+20);
        EditRead->Text = ResultText ;

}

이렇게 해서 결과값은 애플이라고 잘나오거등요...
혹시 이 전송후 메세지 수신후에 DisConnect 되는 현상을 막을수 있는 방법이 없을련지요..
Disconnect 함수가 발생하는 부분은..
void __fastcall TTrace::ClientSocketDisconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
         ButtonConnect->Caption = "Connect";
        //this->ClientSocket->Active =  True;
}

이렇게 되어있습니다. 첨에는 저기 다시 재 접속 할려고 했지만...그건 적당한 방법이 아닌거 같더군요.

추가로
void __fastcall TTrace::ButtonConnectClick(TObject *Sender)
{
       //ConnectSer();
        this->ClientSocket->Active =  True;
      //this->ClientSocket->Open();
}
이 접속 부분이고.....아직까지... error 처리는 하나도 안했습니다.
음... 조언 부탁 드립니다.
왜 이런지..도저히 이해가 안가네요..
아에 send 와동시에 끊어지면 좋을련만..
보낼껀 다보내고 그리고 받을거 받고 나서 접속이 끊기네요..
서버는 vc++ 로 짜여 있다고 들었습니다.


서버로 부터 받은 data 는
HTTP/1.1 200 OK
Server: xxxxxxxxxxxxxx
Date: Wed, 18 Jan 2006 19:35:12 GMT
Content-Length: 8
Content-Type: text/html
ServiceDomain:
BaseURL:
LniErr: #0
LniMsg: ERR_SUCCESS

애플
이렇게 날라 옵니다. ㅜㅠ

+ -

관련 글 리스트
43362 Socket->SendText 를 하면 소켓 연결이 끊어 지네요.. 이윤성 1121 2006/01/18
43372     Re:DisConnect 가 문제네요...ㅜㅠ 이윤성 1040 2006/01/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.