Автор оригинала: 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