|
먼저 읽어주셔서 감사합니다.
다름이 아니라 TClientSocket과 TServerSocket을 이용해 구조체를 주고 받습니다.
문제는 아래와 같이 작성해서 돌려보면 결과값이 2번씩 출력되네요..ㅜ.ㅜ..
문제될꼐 없는 것 같은데.. 혹시 뭐가 잘 못된게 있나해서 이렇게 글을 남김니다. 그럼 즐거운 하루 보내세요.
코드는 다음과 같습니다.
---공 통---
#define sDeleteMessageLen sizeof(DELETEMESSAGE)
typedef struct sDeleteMessage
{
unsigned char szFlag;
char szItemGuid[32];
char szuName[32];
}DELETEMESSAGE, *PDELETEMESSAGE;
---클라이언트---
전송부분
DELETEMESSAGE* pDeleteMessage = new DELETEMESSAGE;
pDeleteMessage ->szFlag = MSGID_DELETEMESSAGE;
strcpy(pDeleteMessage ->szuName, "Test");
strcpy(pDeleteMessage ->szItemGuid, "TestGuid");
csock->Socket->SendBuf((char*)pDeleteMessage , sDeleteMessageLen );
-- 서버부분 --
서버부분 헤더에 구조체에 대해 공용체로 선언해 놓았습니다.
typedef union
{
unsigned char uType;
DELETEMESSAGE stDeleteMessage;
SEARCHITEMREQ stSearchItemReq;
} RCVCLIENTDATA;
받는 부분--
RCVCLIENTDATA pRcvClientData;
Socket->ReceiveBuf((char*)&pRcvClientData, 1); <-- 공용체의 uType을 확인 한 후 switch를 수행합니다.
switch(pRcvClientData.uType)
{
case MSGID_DELETEMESSAGE:
Socket->ReceiveBuf(((char*)&pRcvClientData) + 1, sDeleteMessageLen );
Memo1->Lines->Add(pRcvClientData.stSearchItemPon.szmFlag);
Memo1->Lines->Add(pRcvClientData.stSearchItemPon.szmFlag);
Memo1->Lines->Add(pRcvClientData.stSearchItemPon.szmFlag);
break;
case ....
case ....
break;
default:
break;
}
|