Простой пример клиент-сервер с Java Java - PullRequest
0 голосов
/ 22 ноября 2018

Пожалуйста, не могли бы вы показать мне небольшой пример на локальном хосте клиента и сервера, которые общаются с помощью Java Java?Мне нужно понять, как это работает.Например, 1) клиент требует подключения, клиент подключается, клиент отправляет «Привет, я клиент».2) Сервер принимает, сервер получает сообщение от клиента, Сервер отвечает "привет, я сервер" 3) Клиент отправляет "привет сервер" 4) Сервер отправляет "привет клиент".

Мне не нужен серверчтобы обрабатывать несколько клиентов одновременно, мне нужно понять, как происходит соединение с несколькими сообщениями между клиентом и сервером.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Не совсем уверен, почему вам нужно использовать nio, если вы не собираетесь обрабатывать несколько соединений.Я не вижу смысла в их использовании.

Хорошо, здесь идет: Дайте мне знать, если это работает.

Код сервера:

public class Server {

ServerSocket socket;
Socket listener;

public Server(int port) throws IOException {
    socket = new ServerSocket(port);
}


public void connect() throws IOException{
    listener = socket.accept();
}

public String read() throws IOException{

    byte[] temp = new byte[1024];

    int bytesRead = 0;

    try(InputStream input = listener.getInputStream()){
        bytesRead = input.read(temp);
    }

    return new String(temp,0,bytesRead,"ASCII");
}

public void write(String data) throws IOException{
    byte[] temp = new byte[1024];

    try(OutputStream out = listener.getOutputStream()){
        out.write(data.getBytes());
        out.flush();
    }
}

public void close(){
    socket.close();
}

}

Код клиента:

public class Client{

Socket client;

InetSocketAddress addr;

public Client(String ip, int port) throws IOException{

    client = new Socket();
    addr = new InetSocketAddress(ip,port);

}


public void connect() throws IOException{
    client.connect(addr);
}

public String read() throws IOException{

    byte[] temp = new byte[1024];

    int bytesRead = 0;

    try(InputStream input = client.getInputStream()){
        bytesRead = input.read(temp);
    }

    return new String(temp,0,bytesRead,"ASCII");
}

public void write(String data) throws IOException{
    byte[] temp = new byte[1024];

    try(OutputStream out = client.getOutputStream()){
        out.write(data.getBytes());
        out.flush();
    }
}

public void close(){
    client.close();
}

}

Теперь все, что вам нужно сделать, это вызвать connect () на сервере, а затем connect () наклиент и писать и отправлять сообщения, которые вы хотите.

Не забудьте позвонить близко после того, как вы все сделали.

Также имейте в виду, что вам понадобится какой-то механизм, чтобы сообщитьсервер и клиент, как долго каждое сообщение будет.Или вы можете указать конечный символ, который сообщает клиенту / серверу, что сообщение окончено.

Одна отправка на сервере не обязательно равна считыванию на клиенте и наоборот.Вам придется выяснить, что делать.

0 голосов
/ 22 ноября 2018

Вы можете использовать следующие ссылки для доступа к вашим требованиям https://www.geeksforgeeks.org/socket-programming-in-java/ https://www.journaldev.com/741/java-socket-programming-server-client

...