|
TServerSocket을 사용하고 있구요.
ClientRead 이벤트에서 다음과 같이 처리를 하고 있습니다.
int nRcvLen = Socket->ReceiveLength();
if(nRcvLen > 0)
{
JOB_PACKET Job_Msg = {0,};
char Buffer[2048] = {0,};
Socket->ReceiveBuf(Buffer, nRcvLen);
memcpy(&Job_Msg, Buffer, sizeof(JOB_PACKET));
if(Job_Msg.Magic == 'TEST')
{
String Test1= (String)Job_Msg.test1;
String Test2= (String)Job_Msg.test2;
String Test3= (String)Job_Msg.test3;
String Test4= (String)Job_Msg.test4;
Memo1->Lines->Add(Test1 + Test2 + Test3 + Test4);
}
}
클라이언트에서 SendBuf 로 보내게 되는데. 이때 버튼 다운이벤트에 1개씩 보내거나,
보내고 슬립을 주고 다음 보내고 하는 건 문제 없이 잘 통신이 됩니다.
그러나, SendBuf 후 바로 SendBuf를 보내게 되면 다음에 보내게 된것은 받아서 처리를 못하며,
이렇게 연속으로 보내게 되면 서버가 종료되는 문제가 발생합니다.
에러가 발생하는 부분은 memcpy(&Job_Msg, Buffer, sizeof(JOB_PACKET)); 부분으로
작업중인 메모리를 복사하는 것때문에 그렇지 않을까 생각을 하는데.
이부분을 어떻게 수정을 해야 좋을지 지혜를 구해봅니다.
감사합니다.
|