Рубрики
Без рубрики

ява.ланг.ArrayIndexOutOfBoundsException Программирование сокетов Java – Сервер сокетов, пример клиента

Программирование сокетов Java, Пример сервера сокетов Java, Пример клиента сокетов Java, Пример сокетов Java, Java ServerSocket, чтение и запись сокетов java

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