|
구리구리 님이 쓰신 글 :
: 패킷을 구조체로 전송할 수 있다고 하는데요
: char형으로 변환을 해서 보내야 제대로 간다고 하더라구요
: 그래서 구조체안의 변수들에 값을 채워서 아래처럼 보냈는데요
: send(sock, (const char *)pMyStruct, cch, 0);
: 데이터를 받아보니 'd'라는 값이 오더라고요
: 보내는 곳에서 디버깅해서 보니 (const char *)pMyStruct값이 'd'로 나오고요
: 왜 이렇게 나오는지 모르겠네요
: 데이터를 받는 곳에서도 보내는 곳에서와 같은 구조체가 선언 되어있으면
: 값을 받아서 쓸수 있나요? 어떻게 쓰면되죠?
: 자세히 좀 알려주세요 ㅠ,.ㅠ
:
int
SendToClient(int socket, WORD command, char *send_data, int data_len)
{
PK_HEAD sHead;
int hSize, dSize, state = -1;
char Send_Buff[MAX_SEND_BUFF];
hSize = Frame_Header( &sHead, command, data_len ); // 헤더 생성
memmove( (char *)Send_Buff, &sHead, hSize ); // 버퍼에 헤더 복사
memmove( (char *)Send_Buff + hSize, send_data, data_len ); // 내용 복사.
if ( socket != -1 )
state = send( socket, Send_Buff, hSize + data_len, 0 );
return state;
}
참고하세요..
패킷은 구조체든 어떠한 타입이 정해져있지 않습니다.
받는쪽에서도 그냥버퍼에받아서 원하는 구조체에 그냥 Move해버리면 됩니다.
PK_HEAD rHead;
char RecvBuff[MAX_SEND_BUFF+헤더사이즈];
recv_len = recv( clnt_sock, RecvBuff, 0x7FFFF, 0);
memmove( (char *)rHead, RecvBuff, 헤더사이즈 );
위에서는 헤더(sHead,rHead)를 구조체로 정의하였음.
|