Reputation: 21606
Anyone could pass me an example of sending Ascii msg over TCP?(couldnt find example on the net)
thanks,
ray.
Upvotes: 3
Views: 8098
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
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
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