powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Уходит кодировка при получение от Socket в консоль
10 сообщений из 10, страница 1 из 1
Уходит кодировка при получение от Socket в консоль
    #39326775
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запускаю текст ниже и подключаюсь с консоли telnet-ом, обратно приходит текст жуткими каракулями. Кодировку в консоли утилитой chcp менял и на 65001, и на cp866, и на win1251. Со стороны кода пробовал преобразовывать текст (getBytes()) в win1251 и в cp866. Не получилось. Вместо русских букв то вопросы, то пусто, то еще какая-то фигня.
Подскажите, как сделать нормальное отображение русских букв?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] ar)
    {
        int port = 6789; // случайный порт (может быть любое число от 1025 до 65535)
        try {
            ServerSocket ss = new ServerSocket(port); // создаем сокет сервера и привязываем его к вышеуказанному порту
            System.out.println("Waiting for a client...");
            while (true) {
                Socket socket = ss.accept(); // заставляем сервер ждать подключений и выводим сообщение когда кто-то связался с сервером
                new Thread()
                {
                    Socket client = socket;

                    InputStream sin = client.getInputStream();
                    OutputStream sout = client.getOutputStream();

                    // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения.
                    DataInputStream in = new DataInputStream(sin);
                    DataOutputStream out = new DataOutputStream(sout);

                    String line = null;

                    public void run()
                    {
                        System.out.println("Ready to recive and execute commands.");
                        Boolean stop = false;
                        while(!stop) {
                            try {
                                out.writeBytes("Enter command: ");
                                out.flush();
                                line = in.readLine();
                                if(line.equals("")) continue;
                                if(line.toUpperCase().equals("EXIT"))
                                {
                                    stop = true;
                                    in.close();
                                    out.close();
                                    client.close();
                                    break;
                                }

                                System.out.println("Executing command: \"" + line + "\"");
                                try {
                                    String str = executeCommand(line);
                                    System.out.println(str + "\r\n");
                                    out.writeUTF(str + "\r\n");
                                    out.flush();
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
                            } catch (Exception E) {}
                        }
                    }

                }.start();
            }
        } catch(Exception x) {

        }
    }

    public static String executeCommand(String command)
    {
        StringBuffer output = new StringBuffer();

        Process p;
        try {
            p = Runtime.getRuntime().exec(command);
            p.waitFor();
            BufferedReader reader =
                    new BufferedReader(new InputStreamReader(p.getInputStream()));

            String line = "";
            while ((line = reader.readLine())!= null) {
                output.append(line + "\n");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return output.toString();
    }
}




собственно весь код стыренный с просторов.
Буду рад замечаниям.
...
Рейтинг: 0 / 0
Уходит кодировка при получение от Socket в консоль
    #39326781
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 69 строке вот это "String.valueOf("dsf").getBytes()" лишнее
...
Рейтинг: 0 / 0
Уходит кодировка при получение от Socket в консоль
    #39327689
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько дней нет ответов.
Приведенный код не предназначен для бэкдура. Я всего лишь изучаю джаву и решил немного зайти вперед.А если получится, то будет использоваться совсем другой код, для запуска команд на линуксе, естественно только необходимых для получения инфы о служебных состояниях.
...
Рейтинг: 0 / 0
Уходит кодировка при получение от Socket в консоль
    #39327690
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изначально планировался демон, скорей всего к нему и приду
...
Рейтинг: 0 / 0
Уходит кодировка при получение от Socket в консоль
    #39327834
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousНесколько дней нет ответов.
Приведенный код не предназначен для бэкдура. Я всего лишь изучаю джаву и решил немного зайти вперед.А если получится, то будет использоваться совсем другой код, для запуска команд на линуксе, естественно только необходимых для получения инфы о служебных состояниях.
У вас куча бестолкового кода. Ваш коментарий про 69ю строку сбивает столку. Мой совет по поводу кодировок только один. Попробуйте понять что это вообще такое. Когда у вас появиться понимание что же такое кодировка, вопросы почему она сломалась отпадут сами собой.

Если что не понятно - конкретизируйте вопрос. Если нужно ревью кода - так и напишите.
...
Рейтинг: 0 / 0
Уходит кодировка при получение от Socket в консоль
    #39327968
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczУ вас куча бестолкового кода. Ваш коментарий про 69ю строку сбивает столку. Мой совет по поводу кодировок только один. Попробуйте понять что это вообще такое. Когда у вас появиться понимание что же такое кодировка, вопросы почему она сломалась отпадут сами собой.

Если что не понятно - конкретизируйте вопрос. Если нужно ревью кода - так и напишите.

1) "У вас куча бестолкового кода" - где именно? и какой толковый код?
2) да, странно, была же эта 69 строка с тем текстом что я написал...
3) собственно знаю что такое кодировки, непонятно что имеется в виду.
4) про ревью - конечно интересно, я только изучаю джаву, поэтому избавление от косяков в приоритете.
...
Рейтинг: 0 / 0
Уходит кодировка при получение от Socket в консоль
    #39327975
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous1) "У вас куча бестолкового кода" - где именно?

Да, вот же в первом сообщении
19780056

Imperousи какой толковый код?

Тот в котором нет косяков, которых у вас полно.

Imperous2) да, странно, была же эта 69 строка с тем текстом что я написал...

Нам предлагается на форуме считать до 69?

Imperous3) собственно знаю что такое кодировки, непонятно что имеется в виду.

Если вы знаете что такое кодировки, то, тогда вам не составит труда выявить только те методы, в которых кодировка используется.

Imperous4) про ревью - конечно интересно, я только изучаю джаву, поэтому избавление от косяков в приоритете.
- Пустые catch блоки
- Игнорирование конструкции try with resource
- DataInputStream\DataOutputStream для работы с текстом
- Виндовые переносы строк
- Запуск процессов без вычитки их выхлопа. У вас выхода из waitFor(), вероятно, никогда не будет, потому что процесс будет всегда запущен, потому что ждет когда же из него вывод вычитают.
...
Рейтинг: 0 / 0
Уходит кодировка при получение от Socket в консоль
    #39328651
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Можно пример как выглядит толковый код?
...
Рейтинг: 0 / 0
Уходит кодировка при получение от Socket в консоль
    #39328675
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousМожно пример как выглядит толковый код?
Можно. Но вам от него пользы будет мало. Для вас я бы посоветовал следующее
https://docs.oracle.com/javase/tutorial/
http://www.javapractices.com/home/HomeAction.do
https://www.manning.com/books/bitter-java
...
Рейтинг: 0 / 0
Уходит кодировка при получение от Socket в консоль
    #39332538
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,спасибо
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Уходит кодировка при получение от Socket в консоль
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]