JavaでTCP通信によるデータ送受信


TCP通信特徴

データー送信側(クライアント)

Socket クラスでデータ送受信を行う。
Socket sock = new Socket(IPアドレスまたはホスト名,ポート番号);

Client.java
package com.maekawa.base;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws IOException {
        Socket socket = null;
        OutputStream os = null;
        try {
            //1,接続したいサーバーの住所(IP、ポート)
            InetAddress serverIp = InetAddress.getByName("google.com");
            int port = 8080;
            //2,接続作成
            socket = new Socket(serverIp, port);
            //3,ioストリーム送る
            os = socket.getOutputStream();
            os.write("Hello world".getBytes());

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //4,接続を遮断する
            socket.close();
            os.close();
        }
    }
}

データ受信側(サーバー)

Server.java
package com.maekawa.base;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        try {
            //1,接続を受け付けるポート設定
            ServerSocket serverSocket = new ServerSocket(8080);
            //2,接続準備
            Socket socket = serverSocket.accept();
            //3,クライアントからのデータを読み込む
            InputStream io = socket.getInputStream();

            ByteArrayOutputStream data = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len;
            while ((len=io.read(buffer))!=-1){
                data.write(buffer,0,len);
            }
            System.out.println(data.toString());

            //4,接続を切断する
            io.close();
            socket.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

参考記事