Java examples for Network:TCP
Creating a Socket Connection and Sending Serializable Objects Across the Wire
import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.InetSocketAddress; import java.nio.channels.AsynchronousServerSocketChannel; import java.nio.channels.AsynchronousSocketChannel; import java.nio.channels.Channels; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeoutException; public class Main { InetSocketAddress hostAddress;//from w w w. ja v a 2s. c o m void start() throws Exception { hostAddress = new InetSocketAddress(InetAddress.getByName("127.0.0.1"),1234); Thread serverThread = new Thread(() -> {serverStart();}); serverThread.start(); Thread clientThread = new Thread(() -> {clientStart();}); clientThread.start(); } private void clientStart() { try { try (AsynchronousSocketChannel clientSocketChannel = AsynchronousSocketChannel.open()) { Future<Void> connectFuture = clientSocketChannel.connect(hostAddress); connectFuture.get(); OutputStream os = Channels.newOutputStream(clientSocketChannel); try (ObjectOutputStream oos = new ObjectOutputStream(os)) { for (int i = 0; i < 5; i++) { oos.writeObject("Look at me " + i); Thread.sleep(1000); } oos.writeObject("EOF"); } } } catch (IOException | InterruptedException | ExecutionException e) { e.printStackTrace(); } } private void serverStart() { try { AsynchronousServerSocketChannel serverSocketChannel = AsynchronousServerSocketChannel.open().bind(hostAddress); Future<AsynchronousSocketChannel> serverFuture = serverSocketChannel.accept(); final AsynchronousSocketChannel clientSocket = serverFuture.get(); System.out.println("Connected!"); if ((clientSocket != null) && (clientSocket.isOpen())) { try (InputStream connectionInputStream = Channels.newInputStream(clientSocket)) { ObjectInputStream ois = null; ois = new ObjectInputStream(connectionInputStream); while (true) { Object object = ois.readObject(); if (object.equals("EOF")) { clientSocket.close(); break; } System.out.println("Received :" + object); } ois.close(); } } } catch (IOException | InterruptedException | ExecutionException | ClassNotFoundException e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { Main example = new Main(); example.start(); } }