Как передать целочисленный или байтовый массив через сокет в Java - PullRequest
0 голосов
/ 26 января 2012

да, я смотрел учебники на солнце, и они не помогли в моем случае, только передали первую команду.

У меня есть метод

public void openConnection() throws IOException{

    serverSocket = new ServerSocket(5346);

    Socket simSocket = serverSocket.accept();

    is = simSocket.getInputStream();
    os = simSocket.getOutputStream();

    writer = new PrintWriter(os);
    isReader = new InputStreamReader(is);
    reader = new BufferedReader(isReader);

    System.out.println("Connection succesfull.");
}

и

public void sendTo(int command) {
    try {
        writer.println(command);
        writer.flush();
    } catch(Exception e) {
        System.out.println("Error sending command to the robot");
        System.out.println(e.toString());
    }
}

на отправляющей стороне и

public static void setUpConnection() {
    try {
        socket = new Socket(InetAddress.getLocalHost(), 5346);
        is = new InputStreamReader(
                socket.getInputStream());
        reader = new BufferedReader(is);
        writer = new PrintWriter(socket.getOutputStream());
        System.out.println("Simulator: connection succesful");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

и

while (true) {
                intCommand = reader.read();
                ett = reader.readLine(); // does nothing, but without this line it doesn't work
                command = (char) intCommand;

на принимающей стороне. Он отлично работает, посылая символ или число ascii символа. Что мне нужно, это изменить этот код, чтобы посылать целые числа или просто массив байтов вместо символа. если я просто оставляю только InputStream и OutputStream, он получает первую команду и все, в то время как эти методы постоянно получают то, что отправлено через sendTo. Даже в документации по сокетам они имеют только пример с отправкой только символов.

1 Ответ

0 голосов
/ 26 января 2012

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

...