|
리눅스 게임서버와 클라이언트와의 통신에서 잘 돌아가는 프로그램을 윈도우즈용으로
포팅하기위해서 서버는 그대로 두고 클라이언트는 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)로 넘어갑니다...
서버는 죽지않고 잘 작동하구요...
너무 이상합니다...
아시는분 답장주세요..
|