Udp, Tcp 통신

1. 회사명

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

4. 클라이언트
Unity / C#

5. 클라이언트의 기기
PC / 안드로이드 / iOS

안녕하세요 서버에서 클라로 이동패킷을 보낼때 tcp패킷을

가능한 환경(외부 ip로 접속)udp가 가능하다면 udp 로 바꾸려합니다.

udp로 보내는게 가능한 경우가 외부아이피로 서버를 연 상황에서 외부 아이피로 접속한 경우 udp통신이 가능한것으로 알고있습니다.

현재 RmiContext.ReliableSend 로 보내고 있었는데 WireShark로 패킷을 잡아보니 tcp로 가는것이 확인되었습니다.

RelibaleSend를 UnreliableSend로 변경하니 패킷이 tcp와 udp 동시에 잡히는걸 확인했습니다. tcpport를 제외한 port설정은 따로하지않았으며 udpport는 자동으로 프라우드넷에서 잡아주는걸로 알고있습니다. 제가 혹시 설정을 잘못한게 맞을까요 아니면 tcp, udp 패킷이 동시에 가는게 맞을까요?

또한 만약 udp 통신이 unreliableSend가 맞다면 udp 통신이 불가능한 상황에서는 따로 설정해야하는게 있을까요?

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

RelibaleSend를 UnreliableSend로 변경하면 패킷이 tcp와 udp 동시에 전송되는게 맞습니다.

참고로 UnreliableSend로만 송수신 하게 해도, 프라우드넷 내부적으로 항상 서버와 클라이언트가 Reliable & UnReliable 핑퐁을 주고 받게 되어 있습니다.

감사합니다!

tcp, udp 동시에 전송되면 장점이 있을까요? 클라에서는 어떤걸 우선적으로 송신을 받게되나요?

ReliableSend 를 UnreliableSend 로 변경하면 udp 연결이 되어있을때 udp로 전송됩니다. 하지만 프라우드넷 내부적으로 항상 서버와 클라이언트가 Reliable & Unreliable 핑퐁을 주고 받게 되어 있어서 tcp,udp 패킷이 잡힐 수 있습니다.

상기 링크에서 ProudNet 프로토콜 종류를 확인 부탁드립니다.

서버와 클라이언트의 패킷 부하를 줄이기 위해서 특정 rmi에 RelibaleSend(tcp)대신 UnreliableSend(udp)를 사용하려고 하는 건데요 동시에 전송이라고 말씀하신 것이 서버가 클라이언트에 UnreliableSend로 된 rmi메시지를 보낼 시에 상황에 따라서 tcp 혹은 udp를 선택적으로 보낸다는 말씀이신건지, 아니면 항상 두 가지의 패킷을 같이 보낸다는 말씀이신건지 궁금합니다. 그리고 ping을 포함하여 항상 두 가지의 패킷을 같이 보낸다고 한다면 굳이 추가적인 패킷을 더 보내는 UnreliableSend를 사용할 이유가 있을지 궁금합니다.

항상 두개의 패킷이 동시에 전송되는것은 아닙니다. 전송상황에 따라서 필요한 경우에만 전송된다고 생각해주시면 됩니다!