에서 오는 구조체에 문자 버퍼를 타입 캐스팅 : 소켓에서 오는 구조의 흐름이 있습니다내가 소켓에서 데이터를 읽을 다음 코드를 사용하고 소켓
while (true)
{
int len = 0;
ioctl(sd, FIONREAD, &len);
if (len > 0)
{
len = read(sd, databuf, len);
}
else
std::cout << "error" << std::endl;
}
. 구조체의 크기가 정의되어 있습니다.
그래서 어떻게 같은 구조체 읽을 수 있습니다 : 나는 그것을 타입 캐스팅 생각
typedef struct
{
short msglen;
short id;
int seqno;
}HEADER;
을,하지만 난 그것을 수행하는 방법을 알아낼 수 없습니다. 문자 버퍼에는 구조체가 차례대로 포함됩니다. 첫 번째 바이트를 얻으려면 처음 8 바이트 만 읽어야합니다.
또한 네트워크에서 멀티 캐스트 메시지의 연속 스트림을 수신 중이므로 while 루프가 있습니다.
'std :: memcpy (& header, buffer, sizeof (header)); ' –
@Jayesh 나는 수신 측에있다. 또한, 나는 서버와 연락이 없다. 그들은 ip와 port를 주었다. 그리고 구조체 정의와 크기. 그게 다야. – Chani
실제로 데이터를 유선으로 전송하는 경우 엔디안, 기본 제공 데이터 크기 및 패딩을 생각해야합니다. 단순히 데이터를 복사하는 것은 매우 안전하지 않은 것처럼 보입니다. 객체 직렬화를 살펴보십시오. – juanchopanza