|
UDP 통신할 때는 다음 사항에 주의해야 합니다.
1. 반드시 MTU 이하 사이즈로 전송해야 합니다.
MTU 사이즈는 네트워크마다 틀립니다. 그러므로 최적의 MTU 사이즈를 구하거나 안전하게 모든 네트워크에 최소 크기인 576 바이트 이하로 패킷을 만들어서 보내야 합니다.
이때, UDP/IP 헤더 크기를 감안해야 하므로(약40바이트) 실제 데이터 크기(Payload)는 536 바이트 이하로 만들어야 합니다.
2. 네트워크 대역폭을 초과하면 안 됩니다.
네트워크 대역폭보다 많은 데이터를 전송할 경우 데이터가 라우터단에서 무시되는 경우가 자주 발생합니다.
어느 수준까지 안전하게 전송할 수 있는지 체크하려면 Slow Start 같은 알고리즘을 적용해야 합니다.
물론 이것도 실시간으로 상태가 바뀌므로 완벽하진 않습니다.
그리고, NetMaster 컴퍼넌트는 버그 킹왕짱 컴퍼넌트입니다;;;;
어떤 일까지 있었냐 하면, 그 컴퍼넌트를 좀 쓰면 컴퓨터 종료가 되지 않는 경우가 발생합니다.
마찬가지로 버그 킹왕짱이긴 하지만, Indy를 쓰시는게 조금 더 낫다고 할 수 있습니다.
개인적으로는 UDP 소켓 명령은 워낙 간단하기 때문에 BSD 소켓 명령어를 직접 익히셔서
만들어 보시는 것도 나쁘지 않다고 생각됩니다.
sendto(), recvfrom() 함수만 익혀도 대부분의 명령을 처리할 수 있습니다.
궁금이... 님이 쓰신 글 :
: 제가 TNMUDP로 내부 통신을 하는데 하나의 클라이언트와는 통신이 잘 되다가
: 다른PC에 똑같은 클라이언트를 실행시키고 통신을 하면 통신이 되는 패킷이 있고
: 통신하지 못하는 패킷이 있습니다.
: 그리고 UDP서버를 다른 컴퓨터에서 실행시켜서 문제의 PC에 있는 클라이언트와 통신하게 하면
: 통신이 잘 됩니다.
: 이런 경험을 하신 분이나 혹은 고수님들 답변좀 부탁드립니다.
|