注目記事

【Javaコード入門】ソケット通信_②Socketクラス

クライアント側のソケットを操作する – Socketクラス

Socket(InetAddress address, int port)
Socket(String host, int port)
 address:接続先のアドレス
 host:接続先のホスト
 port:ポート番号

同じくクライアントソケットを生成します。サーバーソケットがない分、クライアントソケットはよりシンプルです。Socketクラスを直接インスタンス化して、ソケットを準備します。Socketクラスの主なメソッドは、以下の通りです。

Socketクラスの主なメソッド
メソッド 概要
void bind(SocketAddress point) ソケットをローカルアドレスにバインド
void close() ソケットを閉じる
void connect(SocketAddress end) ソケットをサーバーに接続
InetAddress getInetAddress() 接続先のアドレスを取得
InputStream getInputStream() 入力ストリームを取得
int getLocalPort() バインド先のローカルポート番号を取得
SocketAddress getLocalSocketAddress() バインドされているアドレスを取得
OutputStream getOutputStream() 出力ストリームを取得
int getPort() 接続先のリモートポート番号を取得
SocketAddress getRemoteSocketAddress() 接続先のアドレスを取得
boolean isConnected() ソケットが接続されているかどうかを判定

以下は、サーバーソケットと通信するためのクライアントソケットの例です。サーバーソケットの例については、前項を参照してください。

SocketClient.java
  1. package com.example.mynavi.socket;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;
  6. import java.net.Socket;
  7.  
  8. public class SocketClient {
  9.   public static void main(String[] args) {
  10.     // クライアントソケットを生成
  11.     try (var socket = new Socket("localhost", 8080);
  12.         var writer = new PrintWriter(
  13.           socket.getOutputStream(), true);
  14.         var reader = new BufferedReader(
  15.           new InputStreamReader(socket.getInputStream()));
  16.         // 入出力のためのReader/Writerを生成
  17.         var keyboard = new BufferedReader(
  18.           new InputStreamReader(System.in))) {
  19.       // 「¥q」を入力するまで、入力文字列をサーバーに送信
  20.       while (true) {
  21.         System.out.print("Input>");
  22.         var input = keyboard.readLine();
  23.         writer.println(input);
  24.         if (input.equals("¥¥q")) {
  25.           break;
  26.         }
  27.         System.out.println("[Server]" + reader.readLine());
  28.       }
  29.     } catch (Exception e) {
  30.       e.printStackTrace();
  31.     }
  32.   }
  33. }

  1. Input>alpha
  2. [Server]ALPHA
  3. Input>project
  4. [Server]PROJECT
  5. Input>¥q

サンプルを動作するには、サーバーソケットをあらかじめ起動した上で、別のコマンドプロンプトでクライアントソケットを起動してください。

関連ページ

ソケット通信_目次
ServerSocketクラス
Socketクラス

監修

山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。