第112回 ソケットチャンネルの入出力
引き続き「ソケットチャンネルの入出力」です。
以前、DatagramSocketクラスを使ってUDP通信を行うことについて書きましたが、チャンネルを使ってUDP通信を行うこともできます。
そのためにはDatagramChannelを使用します。
次のサンプルコードは、データを送信するプログラムです。
import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.DatagramChannel; import java.nio.charset.Charset; public class Main { private static final String HOST = "localhost"; private static final int PORT = 9999; public static void main(String[] args) { DatagramChannel datagramChannel = null; try { Charset charset = Charset.forName("Shift-JIS"); ByteBuffer byteBuffer = charset.encode("send data"); datagramChannel = DatagramChannel.open(); InetSocketAddress inetSocketAddress = new InetSocketAddress(HOST, PORT); datagramChannel.send(byteBuffer, inetSocketAddress); } catch (Exception e) { e.printStackTrace(); } finally { try { datagramChannel.close(); } catch (Exception e) { } } } }
sendメソッドがデータを送信している部分です。
DatagramSocketでデータを送信する場合は、DatagramPacketにデータを格納して送信していましたが、DatagramChannelでデータを送信する場合は、データはバッファに格納して送信します。