プロジェクト

全般

プロフィール

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のチャネルには複数のスレッドが同時に読み書きできる

プログラミングのイメージ

Javaプログラミング TCP通信 ライブラリ使用イメージ

参考資料