아 오랜만에 UDP 통신을 하는데 고민에 빠졌습니다. ㅜㅜ
글쓴이: gloomyr / 작성시간: 월, 2012/06/25 - 8:10오후
그냥 원본 프로그램에 있는 전역변수들을 쉐어드 메모리로 공유해서
UDP 프로그램을 하나 만들어서 쉐어드 메모리 내용을 전송하고 전송 받는 프로그램을 간단하게 하나 제작 할려고 하는데요.
요게 SEND 에서 사이즈 때문에 막혀버렸습니다.
UDP 프로그램이 포트별로 쓰레드 생성해서 돌다보니
4096 사이즈로 잘게 짤라서 보내서 받으니 데이터 값이 제대로 안오더군요. ㅜㅜ
사이즈를 100000인 데이터를 짤라서 보내면 데이터 값이 온전하게 올때도 있고 갑이 불완전 하게 올대도 있고 그렇드라구요.(UDP 통신이지만 내부망이라서 손실은 없을거라 생각했는데 말이죠.)
혹시나 해서 말입니다.
setsockopt로 RECV SEND 버퍼를 1024 * 1024 1mb 크기만큼 지정하고
getsockopt로 보니 1mb가 잡히더라구요.
근데 이게 잘 이해가 안가는게
버퍼크기를 디폴트 8192로 하나 1mb로 하나 sendto 함수로 보낼수 있는 맥시멈 사이즈는 65000 바이트 정도 인겁니다.
setsockopt저거 안먹히는 건가요 ''
send버퍼가 1mb로 잡히면 1mb까지 써져야 하는게 아닌가요. 으아ㅇ!!
혹시 1m~2m정도 한번에 send 할수 있는 방법을 아시는분 있으면 가르침좀 주소서!!!!!!!!!!!!!!!!!!!
Forums:
음 ..
UDP 데이터그램 최대 크기는 64K 입니다.
물론 거기서 IP 헤더(20) 하고 UDP 헤더(8) 를 빼야 하겠지만요.
어플리케이션 레이어에서 적당히 나눠서 보내셔야 할 것 같네요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기