-
#IdTCPServerC++ Builder/Control 2019. 1. 8. 16:54
#IdTCPServer
void __fastcall TForm1::IdTCPServer1Connect(TIdContext *AContext)
{
AnsiString IP = "Connect : " + AContext->Binding->PeerIP;
ListBox1->Items->Add(IP);
}
// 현재 접속된 Client의 IP주소를 읽어서 ListBox에 Display한다.
//---------------------------------------------------------------------------
void __fastcall TForm1::IdTCPServer1Disconnect(TIdContext *AContext)
{
AnsiString IP = "Disconnect : " + AContext->Binding->PeerIP;
ListBox1->Items->Add(IP);
}
//Disconnect할 Client의 IP주소를 읽어서 ListBox에 Display한다.
void __fastcall TForm1::IdTCPServer1Execute(TIdContext *AContext)
{
AnsiString Message;
try{
Message = AContext->Connection->IOHandler->ReadLn("", enUTF8);
// Client로부터의 입력을 대기
}catch(...){
Close();
}
ListBox1->Items->Add(Message);
AContext->Connection->Socket->WriteLn(Message, enUTF8);
AnsiString Name = GetData(Message, "Name");
AnsiString 메세지내용 = GetData(Message, "Msg"); // 한글변수 사용가능.
AnsiString temp = Name +": " + 메세지내용;
ListBox1->Items->Add(temp);
}
AnsiString __fastcall TForm1::GetData(AnsiString AllMsg, AnsiString SubMsg) //GetData함수 사용자정의 { int iInitPos = AllMsg.Pos(SubMsg+"=")+(SubMsg+"=").Length(); // (SubMsg+"=") 문자열 뒤의 pos를 저장. int iCommaPos = AllMsg.Pos(","); int iLastPos = AllMsg.Length(); if(iInitPos<iCommaPos){ return AllMsg.SubString(iInitPos, iCommaPos-iInitPos);// iInitPos 번째 문자열부터 iCommaPos-iInitPos길이만큼의 문자열을 출력 }else{ return AllMsg.SubString(iInitPos, iLastPos); } }// =======IdTCPServer1의 Properties 에서 Intercept를 설정해야 작동.=======void __fastcall TForm1::IdServerInterceptLogEvent1LogString(TIdServerInterceptLogEvent *ASender,const UnicodeString AText){ListBox2->Items->Add(AText);}출처:http://www.realhanbit.co.kr/books/188/pages/1946/preview728x90'C++ Builder > Control' 카테고리의 다른 글
#TDriveComboBox (0) 2019.01.11 #TTimer (0) 2019.01.11 TComboBox (0) 2018.12.06 TPanel (0) 2018.12.06 #TRadioGroup (0) 2018.12.06 댓글