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
[13918] Re:Re:ServerSocket과 ClientSocket으로 소켓프로그램을 만드는데 도와주세요.
김수정 [] 2375 읽음    2011-11-15 11:05
그렇지 않아도 ServerSocket은 문제가 있다는 이야기를 주변에서 들었습니다.
그런제 제가 Indy를 사용해 보지 않았거든요.

제가 올려드린 소스를 Indy로 고치려면 어디를 어떻게 수정해야 하나요?
실은 제가 소켓에대해 전혀 모르는데 억지로 짜고 있거든요.^^

kylix 님이 쓰신 글 :
: 델파이 기본소켓은 기본적으로 비동기방식이어서 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으로 소켓프로그램을 만드는데 도와주세요. 김수정 1805 2011/11/14
13917     Re:ServerSocket과 ClientSocket으로 소켓프로그램을 만드는데 도와주세요. kylix 3288 2011/11/14
13918         Re:Re:ServerSocket과 ClientSocket으로 소켓프로그램을 만드는데 도와주세요. 김수정 2375 2011/11/15
13919             Re:Re:Re:ServerSocket과 ClientSocket으로 소켓프로그램을 만드는데 도와주세요. Lyn 2246 2011/11/15
13921                 Re:Re:Re:Re:ServerSocket과 ClientSocket으로 소켓프로그램을 만드는데 도와주세요. 김수정 2789 2011/11/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.