|
TCP Client , Server 프로그램을 작성하려고 합니다.
(인디로 하려다 인디도 안써봐서 TTcpClient, TTcpServer 로 사용하려고 합니다.)
서버쪽에서
void __fastcall TForm1::TcpServer1Accept(TObject *Sender,
TCustomIpClient *ClientSocket)
{
Add("# accept");
int len;
char buf[1024];
char t[1024];
String ss;
// thread loop
//
do
{
len = ClientSocket->ReceiveBuf(t, 1024, 0);
ClientSocket->SendBuf("OK\r\n", 10);
ss = String(t);
Memo1->Lines->Add(ss);
// 클라이언트 접속이 종료되거나 에러가 나면 len이 0 값이 넘어 온다.
} while(len > 0);
ClientSocket->Close();
Add("# end accept");
}
클라이언트에서
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try
{
TcpClient1->Connect();
if (!TcpClient1->Connected)
return; // break;
TcpClient1->Sendln("12345");
TcpClient1->Disconnect();
}
catch(...)
{
// Memo1->Lines->Add("TcpClient는 Indy와 달리 에러시 예외가 발생하지 않는다.");
throw;
}
}
위와 같이 Client에서 버튼을 누르면 전송되도록 했는데
한번만 눌렀는데
서버쪽에는
12345
12345
두번이 찍힙니다.
TcpClient1->Disconnect();
될때 서버쪽에서 한번더 찍히는데 원인을 못 찾아서요.
|