rayman
rayman

Reputation: 21606

Ascii on TCP socket

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

thanks,

ray.

Upvotes: 3

Views: 8098

Answers (3)

user1459519
user1459519

Reputation: 720

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

Upvotes: 1

CodeGust
CodeGust

Reputation: 844

Not sure, I think this should work:

try (DataOutputStream outToClient = new DataOutputStream(socket.getOutputStream())) {
    outToClient.write(stringMessage.getBytes("US-ASCII"));
} catch (IOException e) {}

Upvotes: 1

Brian Agnew
Brian Agnew

Reputation: 272337

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());
}

Upvotes: 1

Related Questions