|
이게 맞는지는 모르겠지만 원하는 결과가 나오네요.
자료실에 있는 예제를 보고 아래와 같이 바꾸어 봤습니다.
Ping() 부분에 에러가 나서 아래처럼 ip, port를 넣어주니까 에러없이 처리가 됩니다.
또 Reply함수에서 연결(Ping)이 되면 hexa 값으로 48이 오고 연결이 안되면 0 이 오네요.
이것이 맞게 처리를 한건지요?
void __fastcall TfrmMain::SpeedButton1Click(TObject *Sender)
{
try
{
IdIcmpClient1->Host = Edit1->Text;
IdIcmpClient1->Port = 6000;
IdIcmpClient1->ReceiveTimeout = 1000;
IdIcmpClient1->Ping(IdIcmpClient1->Host, IdIcmpClient1->Port);
}
catch(Exception &e)
{
//
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::IdIcmpClient1Reply(TComponent *ASender,
const TReplyStatus &AReplyStatus)
{
int n = AReplyStatus.BytesReceived;
if(n > 0)
{
ShowMessage("연결가능");
}
else
{
ShowMessage("연결불가");
}
}
초보자 님이 쓰신 글 :
: indy_9_00_17_src를 다운받아 임프님께서 설명하신대로 설치후
: 자료실에 있는 PingGUI를 다운받아서 컴파일을 하는데
:
: Too few parameters in call to ‘_fastcall TIdlcmpClient::Ping(AnsiString_unsigned short)
: 라고 에러가 나옵니다.
: ICMP->Ping(); <- 이부분에서 걸립니다.
: 다운받은 소스는 아래와 같습니다.
: Ping()안에 파라미터를 넣어야 하는겁니까?
: 아시는분 부탁드리겠습니다.
:
: 참고로 저는 C++ Builder 5.0을 사용합니다.
:
:
: void __fastcall TfrmPing::btnPingClick(TObject *Sender)
: {
: //ICMP->OnReply = ICMPReply;
: //ICMP->ReceiveTimeout = 1000;
:
: btnPing->Enabled = false;
: try
: {
: ICMP->Host = edtHost->Text;
: for(int i=1;i<=4; i++)
: {
: ICMP->Ping();
: Application->ProcessMessages();
: }
: }
: __finally
: {
: btnPing->Enabled = true;
: }
: }
|