Today you will learn:
Socket and ServerSocketBy the end, you will be able to write basic client-server applications in Java.
Connect to a server using Socket and send data.
import java.io.*;
import java.net.*;
Socket socket = new Socket("localhost", 5000);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("Hello Server!");
socket.close();
Use ServerSocket to listen for connections.
import java.io.*;
import java.net.*;
ServerSocket server = new ServerSocket(5000);
System.out.println("Server started, waiting for client...");
Socket client = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String message = in.readLine();
System.out.println("Received: " + message);
client.close();
server.close();
You can use PrintWriter and BufferedReader to send and receive messages.
PrintWriter out = new PrintWriter(client.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out.println("Hello!");
String response = in.readLine();
System.out.println("Server says: " + response);
import java.io.*;
import java.net.*;
Socket socket = new Socket("localhost", 5000);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("Hello Server!");
socket.close();
Build a basic client-server program where the server echoes messages.
Steps:
ServerSocket to accept clientsBufferedReaderPrintWriterSocket to connect and send messagesExample:
import java.io.*;
import java.net.*;
// Server
public class EchoServer {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(5000);
System.out.println("Server started...");
Socket client = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream(), true);
String message;
while((message = in.readLine()) != null) {
System.out.println("Received: " + message);
out.println("Echo: " + message);
}
client.close();
server.close();
}
}
// Client
public class EchoClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 5000);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.println("Hello Server!");
System.out.println(in.readLine());
socket.close();
}
}