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
[7814] Re:리눅스서버와의 통신...
이경문 [gilgil] 1342 읽음    2001-05-28 19:35
그런 Sync방식, Asynce방식의 차이때문에 그렇습니다.
ClientSocket1->Open()을 한 다음 곧바로 ClientSocket1->Socket->SendBuf를 사용할 수 없습니다.
중간에 ShowMessage가 들어가면 그 사이에 Connect가 되기 때문에 상관없을 수 있지요.
OnClientSocketConnect 이벤트에서 SendBuf를 해 보세요.
만사 님이 쓰신 글 :
: 리눅스 게임서버와 클라이언트와의 통신에서 잘 돌아가는 프로그램을 윈도우즈용으로
:
: 포팅하기위해서 서버는 그대로 두고 클라이언트는 C++Builder로 포팅작업을 시작했습니다.
:
: 서버는 버클리 소켓으로 작성하였구요..
:
: 클라이언트는 컴포턴트 중에서 Internet->ClietSocket의 컴포넌트를 사용하였습니다.
:
: 그런데 Connect버튼을 누르면
:
: //---------------------------------------------------------------------------
: void __fastcall TMainForm::btnConnectClick(TObject *Sender)
: {
:     int nSendLen, nSend;
:
:     // Show Option Form
:     if (SubForm->ShowModal() == mrOk) {
:         // Set Server IP and Port
:         ChatClientSocket->Address = SubForm->EditAddress->Text;
:         ChatClientSocket->Address = szServerAddress;
:         ChatClientSocket->Port = nPort;
:         ChatClientSocket->Active = true;
:     }
:
:
:     // Send Message to Server
:     memset(szData, 0, sizeof(szData));
:     szData[0] = 0;
:     szData[1] = '1';
:     szData[2] = '0';
:     szData[3] = '1';
:     szData[4] = 0;
:
:     nSendLen = 5;
:     lstrcpy(szData + nSendLen, SubForm->EditUserID->Text.c_str());
:     nSendLen += lstrlen(SubForm->EditUserID->Text.c_str());
:     szData[nSendLen++] = 0;
:
:     lstrcpy(szData + nSendLen, SubForm->EditPass->Text.c_str());
:     nSendLen += strlen(SubForm->EditPass->Text.c_str());
:     szData[nSendLen++] = 0;
:
:     szData[0] = (char)(nSendLen - 1);
:
: 1.    ShowMessage("Send Size" + IntToStr(nSendLen));
: 2.    //ShowMessage("Send Size" + IntToStr(nSendLen));
:
:     ChatClientSocket->Socket->SendBuf(&szData, nSendLen);
: }
: //---------------------------------------------------------------------------
:
: 로 연결하려고 작성하였습니다..
:
: 1. 그런데 ShowMessage를 작성하고 SendBuf를 실행하면 소켓이 void __fastcall
:
: TMainForm::ChatClientSocketRead(TObject *Sender, TCustomWinSocket *Socket)
: {
: ...
: }
:
: 으로 잘 넘어가는 데요...
:
: 2. ShowMessage를 작성하지 않고 바로 SendBuf를 실행하면 그냥 프로그램이 SocketRead로
:
: 넘어가지 않고 void __fastcall TMainForm::ChatClientSocketConnect(TObject *Sender,
:
: TCustomWinSocket *Socket)로 넘어갑니다...
:
: 서버는 죽지않고 잘 작동하구요...
:
: 너무 이상합니다...
:
: 아시는분 답장주세요..

+ -

관련 글 리스트
7804 리눅스서버와의 통신... 만사 1294 2001/05/28
7814     Re:리눅스서버와의 통신... 이경문 1342 2001/05/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.