|
안녕하세요~
시간한줌입니다.
아까 질문한것에 조금 서광이 비쳐서 다시 질문을 수정합니다.
소켓 통신으로 구조체를 받으려고 하는데 구조체를 여러개를 두려고 합니다. 그래서 앞에 구조체를 구분할 수 있는 해더 내용을 담았습니다.
// 서버와 클라이언트의 해더파일 내용
typedef struct MyRec
{
char FName[255];
char LName[127];
} TMyRec;
typedef TMyRec* PMyRec;
//---------------------------------------------------------------------------
// 클라이언트
// 구조체 보내기
PMyRec rec = new TMyRec;
int leng=0;
strcpy(rec->FName,"FileName뭘까요?");
leng += sizeof(rec->FName);
strcpy(rec->LName, "FileLength길이 ");
leng += sizeof(rec->LName);
byte * Buff = new byte[leng+3];
strcpy(Buff, "UID");
strcat(Buff,(byte *)rec);// 여기서 문제가 난듯 하기두 하고요 ㅡㅡ;;;
ClientSocket1->Socket->SendBuf(Buff, leng+3);
delete [] Buff;
//---------------------------------------------------------------------------
//서버 부분
char * Buff = new char[3];
Memo1->Lines->Add("받은 버퍼 크기 : " + IntToStr(Socket->ReceiveLength()));
Socket->ReceiveBuf(Buff, 3);
AnsiString str = Buff;
delete [] Buff;
Memo1->Lines->Add("짤린 버퍼 크기 : " + IntToStr(Socket->ReceiveLength()));
if( str == "UID" )
{
PMyRec temp = new TMyRec;
memset(temp, 0x00, sizeof(temp));
Socket->ReceiveBuf(temp, Socket->ReceiveLength() );
Memo1->Lines->Add(temp->FName);
Memo1->Lines->Add(temp->LName);
}
//---------------------------------------------------------------------------
이렇게 했더니~
받은 버퍼 크기 : 512
짤린 버퍼 크기 : 509
FileName뭘까요?
받은 버퍼 크기 : 0
짤린 버퍼 크기 : 0
이런 결과가 나옵니다.
왜? 두번씩이나 읽고 첫번째 구조체 값인 FName만 제대로 읽는 거에요?
웅~ 이거땜에 오늘 하루종일 고생이네요~
좀 해결해 주세요~ ^^
|