TCP通信特徴
- 3ウェイハンドシェイク
- クライアントとサーバーでの通信
データー送信側(クライアント)
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();
}
}
}
参考記事