|
char t[1024];
수신 버퍼를 사용하고 난 후에는 초기화 해야할듯..
이전 값이 남아있어서 그런것 같습니다.
하안인 님이 쓰신 글 :
: 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();
: 될때 서버쪽에서 한번더 찍히는데 원인을 못 찾아서요.
|