|
그런 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)로 넘어갑니다...
:
: 서버는 죽지않고 잘 작동하구요...
:
: 너무 이상합니다...
:
: 아시는분 답장주세요..
|