LoginSignup
5

More than 3 years have passed since last update.

Java通信APIのまとめ(一)Socketの使い方

Last updated at Posted at 2019-08-01

はじめに

今回では、Java通信APIの使い方を簡単にまとめてみます。まずはSocketの使い方を紹介してみましょう。
Socketは元々のjavaの通信APIの一つです。一般的に、tcp(udp?)コネクションをベースに、サーバ側もクライアントも通信できます。

ServerSocket(サーバ側)の使い方

以下のソースの通り、サーバを作ろう。

  • 通信用のServerSocketを作る

  • クライアントとのコネクションを取る

  • ストリームを取ってクライアントからのデータ情報を読み込む

  • ストリームを取ってクライアントへデータ情報を書き出す

Server.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
   public static void main(String[] args) {
      try {
         ServerSocket serverSocket = new ServerSocket(6666);
         System.out.println("server start....");
         Socket s = serverSocket.accept();
         // ログ出力
         System.out.println("client:"+s.getInetAddress().getLocalHost()+"access successed");

         BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
         //クライアントからのデータ情報を読み込む
         String mess = br.readLine();
        // ログ出力
         System.out.println("client:"+mess);

         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
     
     //クライアントへデータ情報を書き出す
         bw.write(mess+"\n");
         bw.flush();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Socket(クライアント側)の使い方

  • Socketのインスタンスを作ってIPとPortを設定

  • ストリームのインスタンスを取る

  • サーバへ送信

  • サーバからの返信を読み込

Client.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
   public static void main(String[] args) {
      try {
         Socket s = new Socket("127.0.0.1",6666);

         //ストリームのインスタンスを取る
         InputStream is = s.getInputStream();
         OutputStream os = s.getOutputStream();

         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
         //サーバへデータ情報を送信
         bw.write("client -> server:hello server! \n");
         bw.flush();

         //サーバからの返信を読み込む
         BufferedReader br = new BufferedReader(new InputStreamReader(is));
         String mess = br.readLine();
         // ログ出力
         System.out.println("server:"+mess);
      } catch (UnknownHostException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

最後に

最後まで読んでいただき、ありがとうございます。
今度はHttpURLconnectionの使い方をまとめます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5