1. ๋ค๋ฅธ ์์คํ
์ผ๋ก ๋ถํฐ ์ ์ก๋๋ ๋ฐ์ดํฐ๋ UDP ๊ธฐ๋ฐ์ ๋ธ๋ก๋ ์บ์คํธ์ด๊ณ , ์ ๊ฐ ์ด๋ฅผ ๋ฐ์์ ์ฒ๋ฆฌํ ํ, ๋ ๋ค๋ฅธ ์์คํ
์ผ
๋ก ์ ์กํ ๋์๋ UDP ๊ธฐ๋ฐ์ ๋ฉํฐ์บ์คํธ ์
๋๋ค.
์ด ๋, ์์ฑ๋๋ ํธ๋ค๋ฌ์ messageReceived() ๋ด์์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํด๋ ๋๋์ง ๊ถ๊ธํฉ๋๋ค.
// ๋ฐ์ดํฐ ์ฒ๋ฆฌ (UDP ๋ธ๋ก๋์บ์คํธ ๋ฐฉ์์ผ๋ก ๋ฐ์ ๋ฐ์ดํฐ)
ChannelBuffer buffer = (ChannelBuffer) e.getMessage();
ChannelBufferInputStream is = new ChannelBufferInputStream(buffer);
// ๋น์ฆ๋์ค ๋ก์ง ์ํ
...
// ์ ์ก (๋ฉํฐ์บ์คํธ ์ฃผ์๋ก ์ ์ก)
e.getChannel().write(buffer, new InetSocketAddress("239.0.0.3",
20002));
์คํ์ ๋๋ ๊ฒ ๊ฐ์๋ฐ ์ด๋ ๊ฒ ํด๋ ๋๋ ๊ฒ์ธ์ง์.
์, ๊ทธ๋ฆฌ๊ณ QOTM ์๋ฅผ ๋ณด๋ฉด ์๋ฒ ์ธก์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ exceptionCaught() ๋ด์์ ์ฃผ์์ผ๋ก ๊ณ์ ์๋น์ค ํด
์ผ ํ๋ฏ๋ก ์ปค๋ฅ์
์ ๋ซ์ง ์๋๋ค๋ผ๊ณ ๋์ด ์๋๋ฐ, ๋คํฐ๋ฅผ ์ฌ์ฉํ UDP ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ์๋ ๋ชจ๋ ์ ์ฉ๋๋ ๋ด์ฉ์ธ์ง ๊ถ๊ธํฉ๋
๋ค.
2. ์์ ๋ฅผ ํ๋ด๋ด๊ฐ๋ฉด์ ๋ฉํฐ์บ์คํธ ๊ธฐ๋ฐ์ ํด๋์ค๋ฅผ ์์ฑํด ๋ณด๋ ค๊ณ API๋ฅผ ์ดํด๋ณด๋,
DatagramChannel์ joinGroup ๋ฉ์๋๊ฐ ๋ฉํฐ์บ์คํธ์ ์ฐ๊ด์ด ์๋ ๊ฒ ๊ฐ์ ์๋์ฒ๋ผ ์์ฑํด๋ณด์์ต๋๋ค.
channel.joinGroup(InetAddress.getByName("239.0.0.3")); // ๋ฐ๋ก ์ด ๋ถ๋ถ
๊ทธ๋ฌ๊ณ ๋ ํ์ ์คํ์ํค๋ฉด ๋ฌด์์ด ๋ฌธ์ ์ธ ๊ฒ์ธ์ง ์๋์ ๊ฐ์ ์์ธ๊ฐ ๋๋๊ตฐ์.
Exception in thread "main" org.jboss.netty.channel.ChannelException:
java.net.SocketException: error setting options
at org.jboss.netty.channel.socket.oio.OioDatagramChannel.joinGroup
(OioDatagramChannel.java:119)
at example.qotm.QuoteOfTheMomentClient.main
(QuoteOfTheMomentClient.java:34)
Caused by: java.net.SocketException: error setting options
at java.net.PlainDatagramSocketImpl.join(Native Method)
at java.net.PlainDatagramSocketImpl.join(PlainDatagramSocketImpl.java:
172)
at java.net.MulticastSocket.joinGroup(MulticastSocket.java:276)
at org.jboss.netty.channel.socket.oio.OioDatagramChannel.joinGroup
(OioDatagramChannel.java:117)
... 1 more
์ดํด๋ณด๋ฉด ๋ฉํฐ์บ์คํธ ๊ธฐ๋ฐ ์์ผ ์ต์
์ ์ค์ ํ๋ค ๋๋ ๊ฒ ๊ฐ์๋ฐ ์ ํํ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ๋๊ตฐ์.
๋คํฐ ์์ค ์ฝ๋๋ฅผ ์ด์ด๋ดค๋๋ฐ ์๋ฐ MulticastSock์ ์ค์ ํ๋ ๊ฒ ์ด์ธ์๋ ์๋ฌด ๊ฒ๋ ์์ด ๋ณด์ด๋๋ฐ, ์ ์ด๋ฐ ์์ธ๊ฐ ๋
๋๊ฑธ๊น์?
์ ๊ฐ API๋ฅผ ์๋ชป ์ดํดํด์ ์๋ชป ์์ฑํ ๊ฒ์ธ์ง, ์๋๋ฉด ๋ฉํฐ ์บ์คํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋ ๋ค๋ฅธ ๋ณ๋์ ์์
์ ํด์ฃผ์ด์ผ ํ๋๊ฑด๊ฐ
์?
On 4์22์ผ, ์คํ6์12๋ถ, penny <keuns...@gmail.com> wrote:
> ๋คํฐ 3.1.0 ๋ฒ ํ ๋ฒ์ ์ ์ดํด๋ณด๋ UDP ๋ฐ ๋ฉํฐ์บ์คํธ๋ฅผ ์ง์ํ๋ค๊ณ ํด์ ์ด๋ฒ ํ๋ก์ ํธ์ ์ ์ฉํ ์ ์๋์ง ์ดํด๋ณด๊ณ ์๋ ์ค
> ์
๋๋ค. ๊ทธ๋ฐ๋ฐ, ํ๋ค๊ฐ ๋งํ๋ ๋ถ๋ถ๋ค์ด ์์ด ์ด๋ ๊ฒ ์ง๋ฌธ์ ์ฌ๋ฆฌ๊ฒ ๋์์ต๋๋ค.
>
> 1. ๋ค๋ฅธ ์์คํ
์ผ๋ก ๋ถํฐ ์ ์ก๋๋ ๋ฐ์ดํฐ๋ UDP ๊ธฐ๋ฐ์ ๋ธ๋ก๋ ์บ์คํธ์ด๊ณ , ์ ๊ฐ ์ด๋ฅผ ๋ฐ์์ ์ฒ๋ฆฌํ ํ, ๋ ๋ค๋ฅธ ์์คํ
์ผ
> ๋ก ์ ์กํ ๋์๋ UDP ๊ธฐ๋ฐ์ ๋ฉํฐ์บ์คํธ ์
๋๋ค.
> ์ด ๋, ์์ฑ๋๋ ํธ๋ค๋ฌ์ messageReceived() ๋ด์์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํด๋ ๋๋์ง ๊ถ๊ธํฉ๋๋ค.
>
> // ๋ฐ์ดํฐ ์ฒ๋ฆฌ (UDP ๋ธ๋ก๋์บ์คํธ ๋ฐฉ์์ผ๋ก ๋ฐ์ ๋ฐ์ดํฐ)
> ChannelBuffer buffer = (ChannelBuffer) e.getMessage();
> ChannelBufferInputStream is = new ChannelBufferInputStream(buffer);
>
> // ๋น์ฆ๋์ค ๋ก์ง ์ํ
> ...
>
> // ์ ์ก (๋ฉํฐ์บ์คํธ ์ฃผ์๋ก ์ ์ก)
> e.getChannel().write(buffer, new InetSocketAddress("239.0.0.3",
> 20002));
>
> ์คํ์ ๋๋ ๊ฒ ๊ฐ์๋ฐ ์ด๋ ๊ฒ ํด๋ ๋๋ ๊ฒ์ธ์ง์.
๋ค, ๊ทธ๋ ๊ฒ ํ์๋ฉด ๋ฉ๋๋ค.
> ์, ๊ทธ๋ฆฌ๊ณ QOTM ์๋ฅผ ๋ณด๋ฉด ์๋ฒ ์ธก์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ exceptionCaught() ๋ด์์ ์ฃผ์์ผ๋ก ๊ณ์ ์๋น์ค ํด
> ์ผ ํ๋ฏ๋ก ์ปค๋ฅ์
์ ๋ซ์ง ์๋๋ค๋ผ๊ณ ๋์ด ์๋๋ฐ, ๋คํฐ๋ฅผ ์ฌ์ฉํ UDP ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ์๋ ๋ชจ๋ ์ ์ฉ๋๋ ๋ด์ฉ์ธ์ง ๊ถ๊ธํฉ๋
> ๋ค.
๋ค, ์๋ฒ์ ๊ฒฝ์ฐ ์์ผ ํ๋๋ก ์ฌ๋ฌ ์๊ฒฉ์ง์์ ํ ํฌํธ๋ก ๋ค์ด์ค๋ ํจํท์ ๋ชจ๋ ์ฒ๋ฆฌํ๋ฏ๋ก ์์ธ๊ฐ ๋ฐ์ํ๋ค๊ณ ํด์ ์์ผ์ ๋ซ์ผ๋ฉด
์๋ฒ๋ฅผ ์ข
๋ฃ์ํค๋ ํจ๊ณผ๋ฅผ ๊ฐ์ง๋ฏ๋ก ์์ธ๊ฐ ๋๋ ์ฑ๋์ ๋ซ์ง ์์์ผ ํฉ๋๋ค. ๋ค๋ง ์ปค๋ฅํธ๋ DatagramChannel์ ๊ฒฝ์ฐ์
๋ ํ๋์ ์๊ฒฉ์ง์์ ํ๋์ ํฌํธ๋ก ๋ค์ด์ค๋ ํจํท๋ง ์ฒ๋ฆฌํ๋ฏ๋ก ๋ซ์๋ ๋ฌด๋ฐฉํ ๋ฏ ํ๋ค์.
> 2. ์์ ๋ฅผ ํ๋ด๋ด๊ฐ๋ฉด์ ๋ฉํฐ์บ์คํธ ๊ธฐ๋ฐ์ ํด๋์ค๋ฅผ ์์ฑํด ๋ณด๋ ค๊ณ API๋ฅผ ์ดํด๋ณด๋,
> DatagramChannel์ joinGroup ๋ฉ์๋๊ฐ ๋ฉํฐ์บ์คํธ์ ์ฐ๊ด์ด ์๋ ๊ฒ ๊ฐ์ ์๋์ฒ๋ผ ์์ฑํด๋ณด์์ต๋๋ค.
>
> channel.joinGroup(InetAddress.getByName("239.0.0.3")); // ๋ฐ๋ก ์ด ๋ถ๋ถ
์ ๋๋ก ํ์ จ์ต๋๋ค.
> ๊ทธ๋ฌ๊ณ ๋ ํ์ ์คํ์ํค๋ฉด ๋ฌด์์ด ๋ฌธ์ ์ธ ๊ฒ์ธ์ง ์๋์ ๊ฐ์ ์์ธ๊ฐ ๋๋๊ตฐ์.
>
> Exception in thread "main" org.jboss.netty.channel.ChannelException:
> java.net.SocketException: error setting options
> at org.jboss.netty.channel.socket.oio.OioDatagramChannel.joinGroup
> (OioDatagramChannel.java:119)
> at example.qotm.QuoteOfTheMomentClient.main
> (QuoteOfTheMomentClient.java:34)
> Caused by: java.net.SocketException: error setting options
> at java.net.PlainDatagramSocketImpl.join(Native Method)
> at java.net.PlainDatagramSocketImpl.join(PlainDatagramSocketImpl.java:
> 172)
> at java.net.MulticastSocket.joinGroup(MulticastSocket.java:276)
> at org.jboss.netty.channel.socket.oio.OioDatagramChannel.joinGroup
> (OioDatagramChannel.java:117)
> ... 1 more
>
> ์ดํด๋ณด๋ฉด ๋ฉํฐ์บ์คํธ ๊ธฐ๋ฐ ์์ผ ์ต์
์ ์ค์ ํ๋ค ๋๋ ๊ฒ ๊ฐ์๋ฐ ์ ํํ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ๋๊ตฐ์.
> ๋คํฐ ์์ค ์ฝ๋๋ฅผ ์ด์ด๋ดค๋๋ฐ ์๋ฐ MulticastSock์ ์ค์ ํ๋ ๊ฒ ์ด์ธ์๋ ์๋ฌด ๊ฒ๋ ์์ด ๋ณด์ด๋๋ฐ, ์ ์ด๋ฐ ์์ธ๊ฐ ๋
> ๋๊ฑธ๊น์?
> ์ ๊ฐ API๋ฅผ ์๋ชป ์ดํดํด์ ์๋ชป ์์ฑํ ๊ฒ์ธ์ง, ์๋๋ฉด ๋ฉํฐ ์บ์คํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋ ๋ค๋ฅธ ๋ณ๋์ ์์
์ ํด์ฃผ์ด์ผ ํ๋๊ฑด๊ฐ
> ์?
์ ์๊ฐ์๋ ์ด์์ฒด์ ๊ด๋ จ ์ด์๊ฐ ์๋๊น ํ๋๋ฐ์. ์ ๋ฆฌ๋
์ค ๋ฐ์คํฌํ์์ ํด ๋ณด๋ ์ ๋๋ ๊ฒ ๊ฐ์์์. ํ ๋ฒ
MulticastSocket ์ ์ง์ ์ฌ์ฉํด์ joinGroup ํด์ ์ ๋๋์ง ํ์ธํด ์ฃผ์๊ฒ ์ด์? ๊ทธ๋๋ ๋์ง ์๋๋ค๋ฉด ์ด์
์ฒด์ ์ค์ ์ ๋ฌธ์ ๊ฐ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ผ ๊ผญ ํ ๋ฒ ํด ๋ณด์๊ณ ํ์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๊ณง RC ๋ค์ด๊ฐ๋๋ฐ ๋ฉํฐ์บ์ค
ํธ ๋ถ๋ถ์ ํ
์คํธํ๊ธฐ๊ฐ ์ด๋ ค์์์ ^^*
์ดํฌ์น ๋๋ฆผ
๊ทธ๋ฐ๋ฐ, ๋ต๋ณํ์ ๋ด์ฉ ์ค์์์...
> ๋ค, ์๋ฒ์ ๊ฒฝ์ฐ ์์ผ ํ๋๋ก ์ฌ๋ฌ ์๊ฒฉ์ง์์ ํ ํฌํธ๋ก ๋ค์ด์ค๋ ํจํท์ ๋ชจ๋ ์ฒ๋ฆฌํ๋ฏ๋ก ์์ธ๊ฐ ๋ฐ์ํ๋ค๊ณ ํด์ ์์ผ์ ๋ซ์ผ๋ฉด
> ์๋ฒ๋ฅผ ์ข
๋ฃ์ํค๋ ํจ๊ณผ๋ฅผ ๊ฐ์ง๋ฏ๋ก ์์ธ๊ฐ ๋๋ ์ฑ๋์ ๋ซ์ง ์์์ผ ํฉ๋๋ค.
๋ผ๊ณ ๋ง์ํ์ ๋ถ๋ถ์ด ์๋๋ฐ, ํ ์๊ฒฉ์ง์์ ๋ฉํฐ ์บ์คํธ๋ก ๋ฟ๋ฆฌ๊ฑฐ๋ ํ ์๊ฒฉ์ง์์ ๋ธ๋ก๋์บ์คํธ๋ก ๋ฟ๋ฆฌ๋ ๊ฒฝ์ฐ์ ํด๋น๋๋ ๋ด์ฉ์ธ
๊ฒ์ด์ง์? ์ ๊ฐ ํ๋ ๋ถ๋ถ ์ค์ ์๊ฒฉ์ง๋ก๋ถํฐ ๋ฉํฐ์บ์คํธ๋ก ๋ฐ์์ ๋ฉํฐ์บ์คํธ๋ก ๋ฟ๋ ค์ผ ํ๋ ๋ถ๋ถ๋ ์๊ฑฐ๋ ์..
> ๋ค๋ง ์ปค๋ฅํธ๋ DatagramChannel์ ๊ฒฝ์ฐ์๋ ํ๋์ ์๊ฒฉ์ง์์ ํ๋์ ํฌํธ๋ก ๋ค์ด์ค๋ ํจํท๋ง ์ฒ๋ฆฌํ๋ฏ๋ก ๋ซ์๋ ๋ฌด๋ฐฉํ ๋ฏ ํ๋ค์.
์ฌ๊ธฐ์์ ์ปค๋ฅํธ๋ DatagramChannel์ด๋ผ๋ ๊ฒ์ UDP ๊ธฐ๋ฐ์ Point to Point๋ฅผ ์๋ฏธํ์๋ ๊ฒ์ธ๊ฐ์?
> ํ ๋ฒ MulticastSocket ์ ์ง์ ์ฌ์ฉํด์ joinGroup ํด์ ์ ๋๋์ง ํ์ธํด ์ฃผ์๊ฒ ์ด์?
MulticastSocket์ ์ง์ ์ฌ์ฉํด์ joinGroup ํ๊ณ ์คํ ์ํค๋ฉด ์ ๋๋ค์;;;
์ฐธ๊ณ ๋ก ์ ์ด์์ฒด์ ๋ ์๋์ฐ XP์ด๊ณ SP 3 ๊น๋ฆฐ ์ํ์
๋๋ค.
๊ท์ฐฎ๊ฒ ํด๋๋ ค์ ์ฃ์กํฉ๋๋ค;;;
๋ธ๋ก๋์บ์คํธ๋ฅผ ๋ฐ๋ ๋ฉํฐ์บ์คํธ๋ฅผ ๋ฐ๋ ์์์ ์๊ฒฉ์ง๋ก๋ถํฐ ๋ฐ๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ด์ผ๊ธฐํ ๊ฑฐ์์^^
> > ๋ค๋ง ์ปค๋ฅํธ๋ DatagramChannel์ ๊ฒฝ์ฐ์๋ ํ๋์ ์๊ฒฉ์ง์์ ํ๋์ ํฌํธ๋ก ๋ค์ด์ค๋ ํจํท๋ง ์ฒ๋ฆฌํ๋ฏ๋ก ๋ซ์๋ ๋ฌด๋ฐฉํ ๋ฏ ํ๋ค์.
>
> ์ฌ๊ธฐ์์ ์ปค๋ฅํธ๋ DatagramChannel์ด๋ผ๋ ๊ฒ์ UDP ๊ธฐ๋ฐ์ Point to Point๋ฅผ ์๋ฏธํ์๋ ๊ฒ์ธ๊ฐ์?
๋ต
> > ํ ๋ฒ MulticastSocket ์ ์ง์ ์ฌ์ฉํด์ joinGroup ํด์ ์ ๋๋์ง ํ์ธํด ์ฃผ์๊ฒ ์ด์?
>
> MulticastSocket์ ์ง์ ์ฌ์ฉํด์ joinGroup ํ๊ณ ์คํ ์ํค๋ฉด ์ ๋๋ค์;;;
> ์ฐธ๊ณ ๋ก ์ ์ด์์ฒด์ ๋ ์๋์ฐ XP์ด๊ณ SP 3 ๊น๋ฆฐ ์ํ์
๋๋ค.
ํน์.. QOTM ์์ ์์ setBroadcast(false/true) ๋ผ์ธ๊ณผ ๊ด๋ จ์ด ์์์ง ๋ชจ๋ฅด๊ฒ ๋ค๋ ์๊ฐ์ด.. ํ ๋ฒ ํด๋น
๋ผ์ธ์ ์ง์ฐ๊ณ ํด ๋ณด๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
> ๊ท์ฐฎ๊ฒ ํด๋๋ ค์ ์ฃ์กํฉ๋๋ค;;;
์๋๋๋ค. ์ ๊ฐ ๋ ๊ท์ฐฎ๊ฒ ํด ๋๋ฆฌ๋ ๊ฒ ๊ฐ๋ค์. ๋ฌธ์ ๋ฅผ ํ๋ฑ ํด๊ฒฐํ๊ณ ์ถ์ด์์ ^^
์ ์์ ์ผ๋ก ์คํ๋์์ต๋๋ค.
> ๋ ์ด๋ ๊ฒ๋ ๋ฐ๊พธ๋ฉด ์ด๋ป๊ฒ ๋๋์ง๋ ๊ถ๊ธํฉ๋๋ค:
>
> MulticastSocket s= new MulticastSocket(new InetSocketAddress(port));
>
> ์ ๋ถํํฉ๋๋ค ^^
์ด ๊ฒฝ์ฐ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์์ ์ผ๋ก ์คํ๋์์ด์;;
์... ๊ทธ๋ ๊ฒ ํ๋๊น ๋์์ด์.
๊ทธ๋ฐ ์์์ ์ฐจ์ด๊ฐ ์์ผ๋ฆฌ๋ผ๊ณ ๋ ์ ๋ง ์์๋ ๋ชปํ๋๋ฐ, ์ ๊ทธ๊ฑธ ๋ชป ๋ณธ ๊ฒ์ธ์ง;;;
์ ๋ง ๊ฐ์ฌํฉ๋๋ค..^^
๋ง์ง๋ง์ผ๋ก ๋ฑ ํ๋์ ์ง๋ฌธ๊ณผ ๋คํฐ์๊ฒ ๋ฐ๋ผ๋ ์ ํ๋๋ง ์ ์๊ป์^^
ChannelBuffer๋ ๋ณด๋๊น ์ด์ ์๋ฐ์ ByteBuffer๋, ๋ฏธ๋์ ByteBuffer์์์ฒ๋ผ putString์ด๋
putInt ๊ฐ์๊ฒ์ด ์๊ณ , ๋์ ChannelBufferOutputStream์ด๋ ChannelBufferInputStream
์ ์ฌ์ฉํด์ String ํ์
์ด๋ float ํ์
์ ์ ๊ทผํ๋ ๊ฒ ๊ฐ์๋ฐ, ์ด๋ ๊ฒ ์ ๊ทผํ๋ ๋ฐฉ์์ด ๋ง๋๊ฑด๊ฐ์?
์.. ๋คํฐ์ ๋ฐ๋ผ๋ ์ ์ ๋ฉํฐ์บ์คํธ ์์ , ์คํ๋ง๊ณผ์ ํตํฉ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์์ ํ๊ณ POJO๋ฅผ ๋ค๋ฃฐ ๋ ์ผ๋ฐ์ ์ธ ์๋ฐ ํ์
๋ค
์ด ์ด๋ป๊ฒ ๋ค๋ฃจ์ด์ ธ ์๋์ง์ ๋ํด ์ฝ๊ฐ ๋ณด๊ฐ๋์ด์ก์ผ๋ฉด ํ๋๊ฑฐ์์^^
์ฑ์คํ๊ฒ ๋ต๋ณํด ์ฃผ์
์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค.^^
๋์ค์ ๊ธฐํ ๋๋ฉด ๋ฉํฐ ์บ์คํธ ์์ ๊ฐ๋จํ๊ฒ๋๋ง ๊ตฌ์ฑํด์ ์ฌ๋ ค๋ณด๋๋ก ํ ๊ป์^^
ํ ๊ฐ์ง ๋นผ ๋จน์๋ค์...
์๋ฐ์ MulticastSocket์์๋ ๋ค์๊ณผ ๊ฐ์ด ํ๋๊น ๋๊ฐ์ด ์ต์
์ค์ ์์ ์ค๋ฅ๊ฐ ๋๋ค์.
๋ฐ์ธ๋ฉ ํ์ joinGroup์ ํ๋ฉด ์ค๋ฅ๊ฐ ์ ๋ฌ์ง๋ง...
MulticastSocket s = new MulticastSocket(null);
s.bind(new InetSocketAddress(port));
s.joinGroup(InetAddress.getByName(group));
๋ฐ์ธ๋ฉ ์ ์ joinGroup์ ์ํํ๋ ์ค๋ฅ๊ฐ ๋๋ค์.
MulticastSocket s = new MulticastSocket(null);
s.joinGroup(InetAddress.getByName(group));
s.bind(new InetSocketAddress(port));
๊ทธ๋ฌ๊ฒ ๋ง์ด์์. ๊ทธ๋ฐ๋ฐ VMware ์์ Windows Vista ๋ก ํ
์คํธํด ๋ณด๋ฉด ์์์ ๊ด๊ณ ์์ด ์ ๋๋ ๊ฒ ๊ฐ์
์. ์ด์์ฒด์ ๋ง๋ค ์กฐ๊ธ์ฉ ์ฐจ์ด๊ฐ ์๋ ๊ฒ ๊ฐ๋ค์.
> ๋ง์ง๋ง์ผ๋ก ๋ฑ ํ๋์ ์ง๋ฌธ๊ณผ ๋คํฐ์๊ฒ ๋ฐ๋ผ๋ ์ ํ๋๋ง ์ ์๊ป์^^
>
> ChannelBuffer๋ ๋ณด๋๊น ์ด์ ์๋ฐ์ ByteBuffer๋, ๋ฏธ๋์ ByteBuffer์์์ฒ๋ผ putString์ด๋
> putInt ๊ฐ์๊ฒ์ด ์๊ณ , ๋์ ChannelBufferOutputStream์ด๋ ChannelBufferInputStream
> ์ ์ฌ์ฉํด์ String ํ์
์ด๋ float ํ์
์ ์ ๊ทผํ๋ ๊ฒ ๊ฐ์๋ฐ, ์ด๋ ๊ฒ ์ ๊ทผํ๋ ๋ฐฉ์์ด ๋ง๋๊ฑด๊ฐ์?
ChannelBuffers.copiedBuffer(String str, String encoding) ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ๋ฒํผ๋ก
๋ณํ์ด ๋๊ณ , ๊ทธ ๋ฒํผ๋ฅผ ์ธ์๋ก ์ฃผ๊ณ writeBytes() ํ์๋ฉด ๋ฉ๋๋ค:
buf.writeBytes(ChannelBuffers.copiedBuffer("์๋ ํ์ธ์", "UTF-8"));
> ์.. ๋คํฐ์ ๋ฐ๋ผ๋ ์ ์ ๋ฉํฐ์บ์คํธ ์์ , ์คํ๋ง๊ณผ์ ํตํฉ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์์ ํ๊ณ POJO๋ฅผ ๋ค๋ฃฐ ๋ ์ผ๋ฐ์ ์ธ ์๋ฐ ํ์
๋ค
> ์ด ์ด๋ป๊ฒ ๋ค๋ฃจ์ด์ ธ ์๋์ง์ ๋ํด ์ฝ๊ฐ ๋ณด๊ฐ๋์ด์ก์ผ๋ฉด ํ๋๊ฑฐ์์^^
๋ง์ํด ์ฃผ์ ๋ถ๋ถ์ ๋ํด์๋ ์ง์์ ์ธ ๋ฌธ์ํ๋ก ํด๊ฒฐํด์ผ ๊ฒ ๋ค์. ๊ด๋ จํด์ ๋ธ๋ก๊ทธ ํฌ์คํ ํ์๋ฉด ์ข์ ๊ฒ ๊ฐ๊ธฐ๋ ํฉ๋๋ค ^^;
> ์ฑ์คํ๊ฒ ๋ต๋ณํด ์ฃผ์
์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค.^^
> ๋์ค์ ๊ธฐํ ๋๋ฉด ๋ฉํฐ ์บ์คํธ ์์ ๊ฐ๋จํ๊ฒ๋๋ง ๊ตฌ์ฑํด์ ์ฌ๋ ค๋ณด๋๋ก ํ ๊ป์^^
์ ์ผ๋ง๋ก ๋ํ์ ํ ๊ฐ์ง ๋ฐฐ์ฐ๊ฒ ๋์๋ค์. ์์ผ๋ก๋ ๋ง์ ๋ฌธ์ ๋ฐ ๋ฒ๊ทธ ๋ณด๊ณ ๋ถํ๋๋ฆฝ๋๋ค^^
์ดํฌ์น ๋๋ฆผ
๋ต๋ณ์ด ํ๋ ๋น ์ก๋ค์;
float ๋ double ์ ๊ฒฝ์ฐ์๋ Float.floatToIntBits() ๋
Double.doubleToLongBits() ๋ก ๋ณํ ํ writeInt ๋ writeLong ์ ์ฌ์ฉํ์๋ฉด ๋๊ฒ ์ต๋๋ค.
์ดํฌ์น ๋๋ฆผ