23.02.12 00:19 작성
·
765
0
List<구조체> 형태를 패킷으로 보낼려고 하는데 BufferWriter부분에서 List<구조체> 데이터를 쓸때 엑세스 위반의 오류가 나오게 됩니다.
List<구조체> 형태의 패킷을 보내는 방법이 있나요?
답변 2
0
0
2023. 02. 12. 00:34
이렇게 하면 당연히 큰일납니다.
list, vector 모두 동작 할당된 힙 메모리의 주소를 잠시 들고 있는 것이라
반대쪽에 그런 주소를 보내줘봤자 이해를 못합니다.
우선 bw << players.size() 로 몇 명이 있는지를 보내주신 다음
플레이어 수만큼 for문으로 bw << struct데이터를 넣어주시면 됩니다.
그 부분을 반대쪽에서 파싱해서 size, struct (xsize개)를 꺼내쓰면 되겠죠
2023. 02. 12. 01:50
강사님이 말씀하신대로
리스트의 길이를 보내준다음 구조체의 데이터를 bw로 넣어서 클라이언트가 파싱 하는데 클라이언트는 리스트의 길이를 받아올때 이상한 값을 받아오고있어서 질문 드립니다...
2023. 02. 12. 01:59
breakpoint를 걸어서 보내는 쪽 데이터를 확인해보시고 (size 포함)
breakpoint를 걸어서 클라에서도 받는 쪽 데이터를 하나씩 확인해보세요.
위 내용만으로는 저도 원인을 알 수 없습니다.
메모리를 까보는 것도 필요할 수 있습니다.
그런데 C# <-> C++ 연동인건가요?
그러면 더 조심할게 많아집니다. (struct Player의 패딩 문제 등)
2023. 02. 12. 02:29
ㅎㅎㅎㅎㅎㅎ 그렇군요 축하드립니다.
저도 한 번 이쪽에서 아주 크게 데인 적이 있어서 남일 같지가 않군요 -_-
헤딩을 오래한 만큼 앞으로 두고두고 기억에 남을겁니다.
그럼 힘내세요