LoginSignup
3
6

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の使い方をまとめます。

3
6
0

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
  3. You can use dark theme
What you can do with signing up
3
6