안녕하세요 초보자 Kenzuro 입니다. 이렇게 물어보기 죄송스러우나,
검색 내공이 부족해서인지 데이터 송 수신법을 찾을 수 없어 질문 남김니다.. 많은 관심 부탁드려요 ^^;
질문 내용은
제가 기본 소켓으로 TCP 연결을 해서 데이터를 송 수신 하는 것은 하고 있는데요.. 이게 아무래도
문제가 되는 듯 싶어 일반 소켓에서 Indy8.0으로 바꿀려고 하고 있습니다.
IdTCPClient1->Host = "IP주소";
IdTCPClient1->Port = 포트번호;
IdTCPClient1->OnWork = IdTCPClient1Work;
IdTCPClient1->Connect();
if(IdTCPClient1->Connected() == true){
MessageBoxA(NULL, "IndyClient Connect", "Notice", MB_OK);
Sleep(5000);
}
이렇게 연결 하고
AnsiString SendData;
TDateTime dTime = Now();
SendData.printf("\x02tm%s\x0d",Now().FormatString("hh:nn:ss"));
if(IdTCPClient1->Connected() == true){
for(int k = 0; k < SendData.Length(); k++){
AnsiString Senddata = String( ((char *)SendData.data())[k]);
IdTCPClient1->Write(Senddata);
}
//IdTCPClient1->WriteLn(SendData);
}
위와 같이 메세지를 보낼려고 했습니다. for문이 들어간 방법도 해보고 밑의 주석이 들어간 방법도 해봤습니다..
일단 첫번째 질문은 이게 맞게 동작하는지 입니다.. 장비에 제대로 명령어가 들어가고 있는건지 궁금합니다.
그리고 정보를 받는 부분은
AnsiString Data = IdTCPClient1->ReadLn(wmRead);
Form1->Memo1->Lines->Add(Data);
OnWork에서 이런식으로 받아왔는데요 아무런 반응도 없네요..
여기서 두번째 질문은 장비에서 메세지를 받을 때는 어떻게 해야 하냐는 것입니다.
물론 장비는 살아 있고요 일반적인 TSocket으로 하면 제대로 돌아갑니다.
사용자 환경은 Builder 6이고요 Indy8.0에서 하고 있습니다.
많은 관심 부탁드립니다.~!
|