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
[13917] Re:ServerSocket과 ClientSocket으로 소켓프로그램을 만드는데 도와주세요.
kylix [] 3288 읽음    2011-11-14 20:57
델파이 기본소켓은 기본적으로 비동기방식이어서 Active=true한다고 해서 바로 접속되지 않습니다.
OnConnect이벤트에서 접속을 체크한 뒤에 데이터를 보내거나, Indy와 같은 동기식 소켓으로 바꾸세요.

김수정 님이 쓰신 글 :
: 델파이 2010를 사용하구요.
: ServerSocket과 ClientSocket으로 소켓프로그램을 하다가 데이터전송을 두번씩 해야 서버에 데이터가 표시됩니다.
: 아주 간단하게 샘플프로그램으르 만들어 봤더니 역시 마찬가지입니다.
:
:
:
: 서버측 소스코드입니다.
: =================================================================================
: procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
: begin
:       ServerSocket1.Active := false;
: end;
:
: procedure TForm1.FormCreate(Sender: TObject);
: begin
:      ServerSocket1.Port := 23;
:      ServerSocket1.Active := True;
: end;
:
: procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
: begin
:       Memo1.Lines.Add(Socket.RemoteAddress + ' sends :') ;
:       Memo1.Lines.Add(Socket.ReceiveText);
: end;
: =================================================================================
:
:
:
: 다음은 클라이언트측 소스코드입니다.
: =================================================================================
: procedure TForm1.Button1Click(Sender: TObject);
: begin
:     ClientSocket1.Port :=  23;
:     ClientSocket1.Host :=  Edit1.Text;
:     ClientSocket1.Active :=  true;
:
:     ClientSocket1.Socket.SendText(Edit2.Text);
:
:     ClientSocket1.Active := false;
:
: end;
: =================================================================================
:
:
: 이렇게 했는데 Button1을 두번 클릭해야 서버의 Memo1에 표시가 됩니다.
:
:
: 클라이언트에서
: 폼을 오픈할때 미리 ClientSocket1.Active :=  true; 를 해두면 한번 클릭해도 잘되는걸 보니
: ClientSocket1.Active :=  true;
: 하고 나서 바로
: ClientSocket1.Socket.SendText(Edit2.Text);
: 를 해주니 문제가 되는것 같은데요.
:
: 수시로 여러 피시로 데이터를 보내야 하기 때문에 이렇게 밖에 할 수 없거든요.
:
:
: 어디를 수정해야 하나요?

+ -

관련 글 리스트
13916 ServerSocket과 ClientSocket으로 소켓프로그램을 만드는데 도와주세요. 김수정 1806 2011/11/14
13917     Re:ServerSocket과 ClientSocket으로 소켓프로그램을 만드는데 도와주세요. kylix 3288 2011/11/14
13918         Re:Re:ServerSocket과 ClientSocket으로 소켓프로그램을 만드는데 도와주세요. 김수정 2376 2011/11/15
13919             Re:Re:Re:ServerSocket과 ClientSocket으로 소켓프로그램을 만드는데 도와주세요. Lyn 2247 2011/11/15
13921                 Re:Re:Re:Re:ServerSocket과 ClientSocket으로 소켓프로그램을 만드는데 도와주세요. 김수정 2790 2011/11/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.