MessageReliability, Reliable 메시징, tcp,udp 핑질문

1. 회사명

2.설치 프라우드넷 버전
설치 파일에 있는 버전 명이나 인증 프로그램의 버전 명은 정확하지 않을 수 있습니다.
CNetConfig.GetVersion 함수를 서버와 클라 각각에서 호출하여 반환된 문자열 2개를 확인해 주세요.

3. 서버
C#

4. 클라이언트
Unity / C++

5. 클라이언트의 기기
PC / 안드로이드 / iOS 1. 프라우드넷 통신시 RmiContext 클래스에서 MessageReliability 변수가 무조건 MessageReliability_Reliable 고정되어있는것 같습니다. unreliablesend 로 보내어 udp 포트로 온것을 확인했음에도 MessageReliability_Reliable 로 통신이 되었습니다. 이것이 맞는지 확인차 여쭈어봅니다.

페이지의 “그 동안 백그라운드로 서버와의 UDP 홀펀칭을 성공하게 되면 UDP 통신도 가능하지만 그 전까진 reliable, Unreliable 메시징 모두 TCP로 대체됩니다. 하지만 UDP 홀펀칭 성공 이후부터 Reliable 메시징 은 UDP로 대체됩니다.” 이부분이 udp 홀펀칭 성공 이후부터 모든 reliable 이 udp로 대체된다고 하는데 reliable이 아니라 unreliable이 맞지 않나(unreliable udp 통신은 p2p에서만 가능한걸로 알아) 확인차 여쭈어 봅니다.

tcp 핑은 클라이언트가 연결된후 부터 udp핑은 udp 홀펀칭이 성공 이후부터 주기적으로 핑이 왔다갔다 하는걸로 알고 있습니다. 핑 주기가 5초정도 되는걸로 보이는데 핑주기와 핑 주기 시간을 변경할수있는지, 핑을 보내지 않을수 있는지 궁금하여 여쭈어봅니다.

안녕하세요! 프라우드넷 정태호입니다.

  1. 서버에 udp 관련 셋팅을 하고 방화벽 및 udp 관련 포트가 다 열려있을때 udp 로 unreliable 메시지 처리를 합니다. 만약에 reliable 로 통신이 되었다면 udp 통신이 안되었다고 보시면 됩니다.

  2. 저희쪽 문서에 잘못된 부분이 있었네요. unreliable 메시지가 udp 로 대체되는것이 맞습니다

  3. CNetConfig 에 UnreliablePingIntervalMs , ReliablePingIntervalMs 을 조절하면 되고 기본값은 4300 ms 입니다. 해당 핑을 전달하지 않는 방법은 없습니다!

C#에서는 핑 기본값조절하는 방법이 있을까요?

void ProcessReceivedMessage_ZL_GetEquipItem(Nettention.Proud.Message __msg, Nettention.Proud.ReceivedMessage pa, Object hostTag, Nettention.Proud.HostID remote)
{
    Nettention.Proud.RmiContext ctx = new Nettention.Proud.RmiContext();
    ctx.sentFrom=pa.RemoteHostID;
    ctx.relayed=pa.IsRelayed;
    ctx.hostTag=hostTag;
    ctx.encryptMode = pa.EncryptMode;
    ctx.compressMode = pa.CompressMode;

RmiContext.unreliableSend로 보낸 패킷을 받는 부분입니다. 해당 패킷의 ReceivedMessage pa 의 포트가 udp 포트로 잡히는걸 확인했으나 RmiContext ctx 의 MessageReliability 의 부분을 바꾸어주지않고 무조건 MessageReliability_Reliable로 기본값으로 설정해주고 있는것같습니다. 이게 udp 통신에 지장이 없고 오류가 아닌지 확인차 여쭈어봅니다.

안녕하세요! 프라우드넷 정태호입니다.

  1. C# 핑 조절 방법은 NetServerConfig 내에 UnreliablePingIntervalMs, ReliablePingIntervalMs을 조절하시면 됩니다.
  2. udp통신에 지장 없습니다! 해당 내요은 오류가 아닙니다.

감사합니다.

1개의 좋아요