Ascii on TCP socket

后端 未结 3 1483
孤独总比滥情好
孤独总比滥情好 2021-01-14 08:39

Anyone could pass me an example of sending Ascii msg over TCP?(couldnt find example on the net)

thanks,

ray.

相关标签:
3条回答
  • 2021-01-14 09:09

    Here's an example of writing to and reading from an echoing server.

    A simplified excerpt:

        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());
    }
    
    0 讨论(0)
  • 2021-01-14 09:10

    Not sure, I think this should work:

    try (DataOutputStream outToClient = new DataOutputStream(socket.getOutputStream())) {
        outToClient.write(stringMessage.getBytes("US-ASCII"));
    } catch (IOException e) {}
    
    0 讨论(0)
  • 2021-01-14 09:11

    Not stated in the original question is whether ASCII control codes have to handled.

    While the accepted answer works for printable ASCII characters I've had problems (on Windows 7 Enterprise SP1) using it for strings containing ASCII control codes, especially strings containing any of the java newline "characters", e.g. VT, CR, LF, etc. A workaround is to send the string as bytes and convert it back to a string at the far end.

    See my answer to this question for how to handle that situation.

    Reading Lines and byte[] from input stream

    and my closely related question and it's accepted answer:

    Need TCPIP client that blocks until a specific character sequence is received

    0 讨论(0)
提交回复
热议问题