|
안녕하세요
수야!╋입니다.
typdef struct _sooya
{
int TotalSize; // 패킷의 전체크기
int Command; // 명령
... // 기타등등
} sooya;
sooya SendSooya;
SendSooya.Command = 1;
기타등등...;
SendSooya.TotalSize = sizeof(sooya);
send(소켓, (char*)&SendSooya, SendSooya.TotalSize, 0);
라고하심대지혀
구조체는 이미 메모리 포인터기때문에
(char*)로만 변환해서 주시면 해당주소값만 전송하게되어있지요
주소값이 가르키는 실제 데이터의 위치를 주기위해서 &를 붙여줘야됩니다.
예를들어
SendSooya의 메모리 주소 1111:1111
1111:1111의 메모리 주소의 값 = 1111:1115
1111:1115의 메모리 위치의 값 = [int][int][기타등등]
(char*) 를 주면 1111:1111 값이 char*로 치환되는것입니당
(char*)&를 주면 1111:1111번지의 값이 가르키를 값을 가르키게 되는것이구요
이해하시기 쉽나요?
구리구리 님이 쓰신 글 :
: 패킷을 구조체로 전송할 수 있다고 하는데요
: char형으로 변환을 해서 보내야 제대로 간다고 하더라구요
: 그래서 구조체안의 변수들에 값을 채워서 아래처럼 보냈는데요
: send(sock, (const char *)pMyStruct, cch, 0);
: 데이터를 받아보니 'd'라는 값이 오더라고요
: 보내는 곳에서 디버깅해서 보니 (const char *)pMyStruct값이 'd'로 나오고요
: 왜 이렇게 나오는지 모르겠네요
: 데이터를 받는 곳에서도 보내는 곳에서와 같은 구조체가 선언 되어있으면
: 값을 받아서 쓸수 있나요? 어떻게 쓰면되죠?
: 자세히 좀 알려주세요 ㅠ,.ㅠ
:
|