|
서버는 되어있고 클라이언트 부분만 작성 중입니다.
접속이랑 다 잘되는데 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
애플
이렇게 날라 옵니다. ㅜㅠ
|