Автор оригинала: Pankaj Kumar.
Добро пожаловать в пример программирования сокетов Java. Каждый сервер-это программа, которая запускается в определенной системе и прослушивает определенный порт. Сокеты привязаны к номерам портов, и когда мы запускаем любой сервер, он просто прослушивает сокет и ожидает запросов клиентов. Например, сервер tomcat, работающий на порту 8080, ожидает клиентских запросов, и как только он получает любой клиентский запрос, он отвечает на них.
Программирование сокетов на Java
Сокет-это одна конечная точка двустороннего канала связи между двумя программами, запущенными в сети. Сокет привязан к номеру порта, чтобы уровень TCP мог идентифицировать приложение, которому предназначены данные для отправки.
В учебнике по примерам программирования сокетов java мы узнаем, как написать сервер сокетов java и клиент сокетов java программу. Мы также узнаем, как клиентская программа сервера считывает и записывает данные в сокет.
java.net.Сокет и java.net.ServerSocket – это классы java, реализующие сокет и сервер сокетов.
Пример Сервера сокетов Java
package com.journaldev.socket; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.ClassNotFoundException; import java.net.ServerSocket; import java.net.Socket; /** * This class implements java Socket server * @author pankaj * */ public class SocketServerExample { //static ServerSocket variable private static ServerSocket server; //socket server port on which it will listen private static int port = 9876; public static void main(String args[]) throws IOException, ClassNotFoundException{ //create the socket server object server = new ServerSocket(port); //keep listens indefinitely until receives 'exit' call or program terminates while(true){ System.out.println("Waiting for the client request"); //creating socket and waiting for client connection Socket socket = server.accept(); //read from socket to ObjectInputStream object ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); //convert ObjectInputStream object to String String message = (String) ois.readObject(); System.out.println("Message Received: " + message); //create ObjectOutputStream object ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); //write object to Socket oos.writeObject("Hi Client "+message); //close resources ois.close(); oos.close(); socket.close(); //terminate the server if client sends exit request if(message.equalsIgnoreCase("exit")) break; } System.out.println("Shutting down Socket server!!"); //close the ServerSocket object server.close(); } }
Клиент сокета Java
package com.journaldev.socket; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; /** * This class implements java socket client * @author pankaj * */ public class SocketClientExample { public static void main(String[] args) throws UnknownHostException, IOException, ClassNotFoundException, InterruptedException{ //get the localhost IP address, if server is running on some other IP, you need to use that InetAddress host = InetAddress.getLocalHost(); Socket socket = null; ObjectOutputStream oos = null; ObjectInputStream ois = null; for(int i=0; i<5;i++){ //establish socket connection to server socket = new Socket(host.getHostName(), 9876); //write to socket using ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); System.out.println("Sending request to Socket Server"); if(i==4)oos.writeObject("exit"); else oos.writeObject(""+i); //read the server response message ois = new ObjectInputStream(socket.getInputStream()); String message = (String) ois.readObject(); System.out.println("Message: " + message); //close resources ois.close(); oos.close(); Thread.sleep(100); } } }
Чтобы протестировать программирование сокетов java для связи сервер-клиент, сначала нам нужно запустить Пример сокета сервера
класс. Когда вы запустите сервер сокетов, он просто напечатает “Ожидание запроса клиента”, а затем дождется запроса клиента.
Теперь, когда вы запустите класс примера клиента сокета, он отправит запрос на сервер сокетов java и распечатает ответное сообщение на консоль.
Вот выходные данные java-сервера сокетов Пример сервера сокетов
программа.
Waiting for the client request Message Received: 0 Waiting for the client request Message Received: 1 Waiting for the client request Message Received: 2 Waiting for the client request Message Received: 3 Waiting for the client request Message Received: exit Shutting down Socket server!!
Вот вывод клиента сокета Java Пример клиента сокета
программа.
Sending request to Socket Server Message: Hi Client 0 Sending request to Socket Server Message: Hi Client 1 Sending request to Socket Server Message: Hi Client 2 Sending request to Socket Server Message: Hi Client 3 Sending request to Socket Server Message: Hi Client exit
Это все для быстрого ознакомления с программированием сокетов на java. Я надеюсь, что вы сможете начать работу с java-сервером сокетов и клиентским программированием java-сокетов.
Ссылка: Документация Oracle