Ascii на TCP-сокете - PullRequest
       3

Ascii на TCP-сокете

2 голосов
/ 23 января 2011

Кто-нибудь может передать мне пример отправки сообщения Ascii через TCP?

Ответы [ 3 ]

1 голос
/ 12 декабря 2015

Не уверен, я думаю, что это должно работать:

try (DataOutputStream outToClient = new DataOutputStream(socket.getOutputStream())) {
    outToClient.write(stringMessage.getBytes("US-ASCII"));
} catch (IOException e) {}
1 голос
/ 18 марта 2016

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

Хотя принятый ответ работает для для печати ASCII-символов, у меня возникли проблемы (в Windows 7 Enterprise SP1) при использовании его для строк, содержащих управляющие коды ASCII, особенно строк, содержащих любые из символов «новой строки» java например, VT, CR, LF и т. Д. Обходной путь - отправить строку в байтах и ​​преобразовать ее обратно в строку на дальнем конце.

Смотрите мой ответ на этот вопрос, чтобы узнать, как справиться с этой ситуацией.

Чтение строк и байтов [] из входного потока

и мой тесно связанный вопрос, и он принял ответ:

Требуется клиент TCPIP, который блокирует до получения определенной последовательности символов

1 голос
/ 23 января 2011

Вот пример записи и чтения с эхо-сервера.

Упрощенная выдержка:

    Socket echoSocket = null;
    PrintWriter out = null;
    BufferedReader in = null;

    try {
        echoSocket = new Socket("taranis", 7);
        out = new PrintWriter(echoSocket.getOutputStream(), true);
        in = new BufferedReader(new InputStreamReader(
                                    echoSocket.getInputStream()));
    } catch (UnknownHostException e) {
        System.err.println("Don't know about host: taranis.");
        System.exit(1);
    } catch (IOException e) {
        System.err.println("Couldn't get I/O for "
                           + "the connection to: taranis.");
        System.exit(1);
    }

BufferedReader stdIn = new BufferedReader(
                               new InputStreamReader(System.in));
String userInput;

while ((userInput = stdIn.readLine()) != null) {
    out.println(userInput);
    System.out.println("echo: " + in.readLine());
}
...