|
에..우선 포인터에 대해서 공부를 해보시길 권장합니다.
소켓 전송 전에 저런 구조체를 '파일'로 저장하는걸 연습하시면 좀더 이해가 빠를것 같네요.
우선..
typedef struct MyRec
{
char* m;
char* n;
}TMyRec;
이걸 전송하면, 내용이 어쨌던 간에 무조건 8바이트가 전송됩니다. (윈도우 플랫폼)
그리고 내용은 주소값이 됩니다.
원하시는 형태로 동작하게 하고 싶으시면 구조체를 다음과 같이 바꿔야 합나다.
typedef struct MyRec
{
char m[5]; // NULL 포함, 보통 소켓프로그래밍에서 NULL은 전송하지 않습니다.
char n[5]; // NULL 포함
} TMyRec;
신혜영 님이 쓰신 글 :
: Q&A를 보면서 여러번 시도 했지만 안되요.^^
:
: 구조체
: typedef struct MyRec
: {
: char* m;
: char* n;
: }TMyRec;
: typedef TMyRec* PMyRec;
:
:
: 서버에서 보내는 부분...
: char* xx="test1";--> 왜냐하면 실질적으로 string으로 받아오는 부분을 보내야 합니다.
: char* yy="test2";
:
: PMyRec temp;
: temp = new TMyRec;
: temp->m = xx;
: temp->n = yy;
: ServerSocket->Socket->Connections[0]->SendBuf(temp,sizeof(temp));
: delete temp;
:
: 클라이언트 부분
: PMyRec temp;
: temp = new TMyRec;
: ClientSocket->Socket->ReceiveBuf(temp,Socket->ReceiveLength());
: ShowMessage(IntToStr(temp->m));
: ShowMessage(IntToStr(temp->n));
: delete temp;
:
:
|