Anyone could pass me an example of sending Ascii msg over TCP?(couldnt find example on the net)
thanks,
ray.
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());
}
Not sure, I think this should work:
try (DataOutputStream outToClient = new DataOutputStream(socket.getOutputStream())) {
outToClient.write(stringMessage.getBytes("US-ASCII"));
} catch (IOException e) {}
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