この記事では、Javaを使ったネットワークプログラミングの基本について紹介します。特にソケット通信に焦点を当てて説明します。
まず、ネットワークとは複数のコンピュータがつながっている状態のことを指します。私たちがインターネットを利用するのも、ネットワークのおかげです。
そして、ソケットはネットワーク上でデータを送り合うための「窓口」のようなものです。これを使って、クライアント(データを送る側)とサーバー(データを受け取る側)が通信できます。
Javaでは、ソケット通信を行うために主に次の2つのクラスを使います。
サーバー側がクライアントからの接続を待ち受けるために使うクラスです。これを使うことで、特定のポートで待機し、クライアントがアクセスしてくるのを待ちます。
クライアント側は、このクラスを使ってサーバーに接続します。接続が成功すると、データの送受信が可能になります。
ここでは、簡単なサーバーとクライアントのコードを見てみましょう。
import java.io.*;
import java.net.*;
public class MyServer {
public static void main(String[] args) {
try (ServerSocket serverSocket = new ServerSocket(12345)) {
System.out.println("サーバーが立ち上がりました。接続を待っています...");
Socket socket = serverSocket.accept();
System.out.println("クライアントが接続しました。");
// データの受信
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = in.readLine();
System.out.println("受信したメッセージ: " + message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.*;
public class MyClient {
public static void main(String[] args) {
try (Socket socket = new Socket("localhost", 12345)) {
// データの送信
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("こんにちは、サーバーさん!");
} catch (IOException e) {
e.printStackTrace();
}
}
}