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

C++빌더 Q&A
C++Builder Programming Q&A
[47716] 소켓통신 프로그램에서
이희성 [] 1526 읽음    2007-01-11 07:13
//////클라이언트 소켓
void __fastcall TMainForm::ClientSocket1Connect(TObject *Sender,
      TCustomWinSocket *Socket)
{
unsigned char Buf[2];
   Buf[0] =0X55;
   Buf[1] =0X88;
  if(ClientSocket2->Socket->Connected)
   {
   Socket->SendBuf(&Buf, 2);
   //AnsiString Buf =ComboBox1->Text ;
   //Socket->SendBuf(Buf.c_str(), Buf.Length());
   // ShowMessage("정상적으로"+Socket->RemoteAddress+ "로 전송하였습니다 ");
   }
ClientSocket2->Active = false;


//////서버 소켓 데이타 수신


void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
ShowMessage("정상적으로"+Socket->RemoteAddress+ "로 수신하였습니다 ");
}
//---------------------------------------------------------------------------


void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
AnsiString r_temp;
int ReceiveSize = 0;
if(ServerSocket1->Socket->Connected)
{
  ReceiveSize = Socket->ReceiveLength();
  char *Buf = new char[ReceiveSize];
  Socket->ReceiveBuf(Buf, ReceiveSize);
  Memo1->Lines->Text =Memo1->Lines->Text+Buf;
}       
}위는 제가 공부중인 소켓통신 프로그램입니다..

void __fastcall TMainForm::ClientSocket1Connect(TObject *Sender,
      TCustomWinSocket *Socket) 함수부분에서 데이타의 전송이 이루어 집니다
메시지박스 확인 누를때까지 데이타는 에러없이 정확히 잘나갑니다..전송받는 장치에서 0x55데이타를 받은후.
0x88이 뜰때 while문에서 잡고확인을 했습니다. 잘되고 데이타 잘나옵니다..
원래  ClientSocket2->Active = false;이 명령을 받기 전까지...즉 쇼메시지 박스의 확인누를때까지 데이타가 계속 전송
되어 지는 건가요?
근데 메시지 박스를 주석처리한후에는 데이타가 전송이 안됩니다... 둘의 차이가 어떤건지 이해가 도통 안되네여.
제가 생각하기로는 Buf[0],Buf[1]에 있는 데이타가 한번은 나가야 정상같은데여.
참 그리고 버튼클릭시  ClientSocket2->Active = true; 로 만들어주면..위에 함수가 실행됩니다.
그리고 아래 서버소켓은 데이타를 수신하는데..저것두 마찬가지로 쇼메시지 박스의 정상수신 되었습니다
가 나타나고 확인을 누르기 전까지 계속 데이타가 나오는듯 합니다...
클라이언트의상황이랑 비슷한거 같은데.여 어찌해야 하나여?
그리고 서버소켓프로그램을 저런식으로 할경우 소켓을 닫지 않으므로 데이타이 전송이 있는경우 계속 데이타를 수신할수 있습니까?
시간이 급한데 안되서 답답하네여.... 명쾌한 답변 부탁드립니다..
오늘두 즐프하세여..배울수록 재미있네여..ㅋㅋ

+ -

관련 글 리스트
47716 소켓통신 프로그램에서 이희성 1526 2007/01/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.