Задать вопрос
officialandrey
@officialandrey

Как передать на сервер int?

Здравствуйте.
Есть реализованное клиент-сервер приложение.
Reader и Writer реализованы через BufferedReader и BufferedWriter соответственно.
Проблема в том что Buffered считывает побайтово. Не могу реализовать in out что бы можно было считывать например int, float.
Прошу помощи.

Передает только первую цифру
5faf21f4cb0f2715868045.png


Ссылка на код
или ниже:
Клиент
import java.io.*;

public class Client {
    public static void main(String[] args) {
        try (Manager manager = new Manager("127.0.0.1", 8000)) {
            System.out.println("Connected to server");

            int a = manager.readInt();
            int b = manager.readInt();
            int n = manager.readInt();
            System.out.println(a + "," + b + "," + n);

            while (manager.readLine() != "close") {
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


Сервер
import java.io.*;
import java.net.ServerSocket;
import java.util.Scanner;

public class Server {
    public static void main(String[] args) throws IOException {
        try (ServerSocket server = new ServerSocket(8000);) {
            Scanner in = new Scanner(System.in);

            System.out.println("Server start");

            while (true) {
                Manager manager = new Manager(server);
                new Thread(new Runnable() {
                    @Override
                    public void run() {

                        System.out.print("Input a A B Step: ");
                        int a = in.nextInt();
                        int b = in.nextInt();
                        int n = in.nextInt();
                        manager.writeInt(a);
                        manager.writeInt(b);
                        manager.writeInt(n);
                        System.out.println(a + "," + b + "," + n);

                        try {
                            manager.close();
                        } catch (IOException e) {
                        }
                    }
                }).start();
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}


Manager - реализация связи клиента и севера, сокет
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.Closeable;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;


public class Manager implements Closeable {
    private final Socket socket;
    private final BufferedReader reader;
    private final BufferedWriter writer;

    public Manager(String ip, int port) {
        try {
            this.socket = new Socket(ip, port);
            this.reader = createReader();
            this.writer = createWriter();
        }
        catch (IOException e){throw new RuntimeException(e);}
    }

    public Manager(ServerSocket server) {
        try {
            this.socket = server.accept();
            this.reader = createReader();
            this.writer = createWriter();
        }
        catch (IOException e){throw new RuntimeException(e);}
        
    }

    public void writeLine(String message) {
        try {
            writer.write(message);
            writer.newLine();
            writer.flush();
        }
        catch (IOException e) {throw new RuntimeException(e);}
    }

    public String readLine() {
        try {return reader.readLine();}
        catch (IOException e) {throw new RuntimeException(e);}
    }

    public void writeInt(int num) {
        try {
            writer.write(num);
            writer.newLine();
            writer.flush();
        }
        catch (IOException e) {throw new RuntimeException(e);}
    }

    public int readInt() {
        try {return reader.read();}
        catch (IOException e) {throw new RuntimeException(e);}
    }

    private BufferedReader createReader() throws IOException {
        return new BufferedReader(new InputStreamReader(socket.getInputStream()));
    }

    private BufferedWriter createWriter() throws IOException {
        return new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
    }

    @Override
    public void close() throws IOException {
        socket.getInputStream().close();
        reader.close();
        writer.close();
    }
}
  • Вопрос задан
  • 134 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы