개발공부/네트워크

C++ Socket UDP - sendto , recvfrom 응용(class 전송)

수박 서리 2024. 2. 14. 17:37

UDP 통신을 이용하여 data를 통신하는 코드를 작업을 진행중에 
일반적인 Char* buffer[buffet_size] 를 이용한 데이터 전송이 아닌 자신이 만든 class data를 전송 할 수 있어
기록을 위해 작성합니다.

 

https://learn.microsoft.com/ko-kr/windows/win32/api/winsock/nf-winsock-sendto

 

sendto 함수(winsock.h) - Win32 apps

sendto 함수(winsock.h)는 데이터를 특정 대상으로 보냅니다.

learn.microsoft.com

 

char SendBuf[1024];

int BufLen = 1024;

MSDN에는 sendto의 매개변수로 위에 변수들을 사용하지만 텍스트가 아닌 클래스(또는 struct) 데이타를 전송하고 수신하고 싶은 경우가 있을 것이다. 이런 경우에는 아래와 같이 하면 된다.

Class CExampleClass

{

public
        int a;
        double b;
}

int main{

//socket관련 생략 MSDN참조 할것

CExampleClass* pExampleClass = new CExampleClass();

sendto(m_Pop, (char*)& pExampleClass , sizeof( pExampleClass), 0, (SOCKADDR*)&Address, &AddressSize);
recvfrom(m_Pop, (char*)& pExampleClass , sizeof( pExampleClass), 0, (SOCKADDR*)&Address, &AddressSize);
}

이런 식으로 코드를 작성하면 텍스트뿐만 아니라 data도 UDP 송 수신이  가능하다.