Reading and Writing Textual Data
Problem
Having connected, you wish to transfer textual data.
Solution
Construct a
BufferedReader
or PrintWriter from
the socket’s getInputStream( )
or getOutputStream( ).
Discussion
The Socket class has methods that allow you to get
an InputStream or OutputStream
to read from or write to the socket. There is no method to fetch a
Reader or Writer, partly
because some network services are limited to ASCII, but mainly
because the Socket class was decided on before
there were Reader and Writer
classes. You can always create a Reader from an
InputStream or a Writer from an
OutputStream using the conversion classes. The
paradigm for the two most common forms is:
BufferedReader is = new BufferedReader(
new InputStreamReader(sock.getInputStream( )));
PrintWriter os = new PrintWriter(sock.getOutputStream( ), true);Here is code that reads a line of
text from the “daytime”
service, a service offered by full-fledged TCP/IP suites (such as
those included with most Unixes). You don’t have to send
anything to the Daytime server; you simply connect
and read one line. The server writes one line containing the date and
time, and then closes the connection.
Running it looks like this. I started by getting the current date and
time on the local host, then ran the DaytimeText
program to see the date and time on the server (machine
“darian” is my local server):
C:\javasrc\network>date Current date is Sun 01-23-2000 Enter new date (mm-dd-yy): C:\javasrc\network>time ...