Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[13999] Re:왕초보와빌더님 감사합니다. 한 번 해볼께요.
김수정 [] 2063 읽음    2011-12-16 17:28
왕초보와빌더 님이 쓰신 글 :
: 통신할때에도 버퍼를 사용하므로 아마 버퍼 비우기를 하셔야 할 겁니다.
:
:  IdTCPClient1.IOHandler.flush 던가 하는걸 WriteLn 한 후에 해주면 되겠지요
:
: 김수정 님이 쓰신 글 :
: : 아래 처럼 코딩했는데요.
: : 프로그램을 실행하고 Button1을 처음 누를때는 서버쪽에 메세지가 나타납니다.
: : 그런데 두번 연속해서 클릭하면 서버쪽에서 처음 누를때만 메세지가 전송되고
: : 두번쩨 클릭할때는 에러가 납니다.
: : 그런데 이상한건 한번 클릭하고 나서 한참이 지난 다음 또 클릭해보면 이상없이 잘 전달이 되거든요.
: : 어디가 잘못되었는지 봐주시면 감사하겠습니다.
: : ==================================클라이언트==================================
: : procedure TForm1.Button1Click(Sender: TObject);
: : begin
: :     Try
: :         Try
: :             IdTCPClient1.Connect;
: :             IdTCPClient1.IOHandler.WriteLn(Edit1.Text, TIdTextEncoding.UTF8);
: :          Finally
: :             IdTCPClient1.DisConnect;
: :          End;
: :      Except
: :             Memo1.lines.add('에러났다!!');
: :      End;
: : end;
: :
: : ==================================== 서버=====================================
: : unit ServerU;
: :
: : interface
: :
: : uses
: :   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
: :   Dialogs, IdContext, IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent,
: :   IdComponent, IdCustomTCPServer, IdTCPServer, IdScheduler,
: :   IdSchedulerOfThreadDefault, IdGlobal, ExtCtrls, StdCtrls;
: :
: : type
: :   TForm1 = class(TForm)
: :     IdTCPServer1: TIdTCPServer;
: :     IdAntiFreeze1: TIdAntiFreeze;
: :     ImageList1: TImageList;
: :     TrayIcon1: TTrayIcon;
: :     IdSchedulerOfThreadDefault1: TIdSchedulerOfThreadDefault;
: :     Memo1: TMemo;
: :     procedure FormCreate(Sender: TObject);
: :     procedure FormClose(Sender: TObject; var Action: TCloseAction);
: :     procedure IdTCPServer1Execute(AContext: TIdContext);
: :   private
: :     { Private declarations }
: :   public
: :     { Public declarations }
: :   end;
: :
: : var
: :   Form1: TForm1;
: :
: : implementation
: :
: : {$R *.dfm}
: :
: : procedure TForm1.FormCreate(Sender: TObject);
: : begin
: :      IdTCPServer1.Active := True;
: : end;
: : procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
: : begin
: :      IdTCPServer1.Active := False;
: : end;
: :
: : procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
: : var
: :      ReceivedString: string;
: :      CMD : String;
: : Begin
: :          ReceivedString := AContext.Connection.IOHandler.ReadLn(TEncoding.UTF8);
: :          CMD = Copy(ReceivedString, 1, 3);
: :
: :          IF CMD = 'MSG'  THEN  ShowMessage('[MSG]가 들어왔다')
: :          Else IF CMD = 'CMD'  THEN  ShowMessage('[CMD]가 들어왔다')
: :          Else ShowMessage('뭔가가 들어왔는데....?');
: :
: : end;
: : end.

+ -

관련 글 리스트
13994 IDTCPServer에서 메세지를 받는 방법에 문제가 있는것 같아요. 도움 부탁드립니다. 김수정 3225 2011/12/14
13997     flush() 를 안하셔서 그런듯 왕초보와빌더 2657 2011/12/15
13999         Re:왕초보와빌더님 감사합니다. 한 번 해볼께요. 김수정 2063 2011/12/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.