Javaプログラミング TCP通信¶
はじめに¶
インターネットプロトコルのTCPを使ってプログラム間の通信を行うプログラミングをJavaで行います。
言語・ライブラリによらずTCPに関するプログラミング上の考慮事項を別ページTCPについてにまとめています。
Javaは標準でTCP/IP通信を行うためのクラスライブラリを最初から装備しています。IPv6対応もSSLもばっちりです。
JavaのTCP/IP通信ライブラリ¶
JavaにおけるTCP/IP通信ライブラリは、POSIX APIやWinSockなどのいわゆるソケットAPIをクラス化したものです。
ライブラリは、Javaの進化に伴い、次の3つがあります。
- Javaの最初のバージョン(1.0)から装備されているjava.netパッケージ
- Java SE 1.4から装備されたjava.nioパッケージ
- Java SE 7から装備されたNIO.2(java.nioパッケージの拡充)
主要な違いは、java.netパッケージは、ソケットの入出力にIOストリームを使用するのに対して、NIOおよびNIO.2はソケットの入出力にバッファを使用すること、NIOおよびNIO.2にはノンブロッキングや非同期I/Oが提供されることです。
その他違いを列挙します。
- IOストリームにはエンディアンのサポートがないが、NIOのバッファ(ByteBuffer)にはエンディアンを考慮したデータの読み書きがある
- NIOのチャネルには複数のスレッドが同時に読み書きできる
プログラミングのイメージ¶
参考資料¶