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
package com.example.mynavi.socket; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class SocketClient { public static void main(String[] args) { // クライアントソケットを生成 try (Socket socket = new Socket("localhost", 8080); PrintWriter writer = new PrintWriter( socket.getOutputStream(), true); BufferedReader reader = new BufferedReader( new InputStreamReader(socket.getInputStream())); // 入出力のためのReader/Writerを生成 BufferedReader keyboard = new BufferedReader( new InputStreamReader(System.in))) { // 「\q」を入力するまで、入力文字列をサーバーに送信 while (true) { System.out.print("Input>"); String input = keyboard.readLine(); writer.println(input); if (input.equals("\\q")) { break; } System.out.println("[Server]" + reader.readLine()); } } catch (Exception e) { e.printStackTrace(); } } }
Input>alpha [Server]ALPHA Input>project [Server]PROJECT Input>q
サンプルを動作するには、サーバーソケットをあらかじめ起動した上で、別のコマンドプロンプトでクライアントソケットを起動してください。
関連ページ
ServerSocket