Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Standard view
Full view
of .
Look up keyword
Like this
0 of .
Results for:
No results containing your search query
P. 1
Reading from and Writing to a Socket (The Java™ Tutorials _ Custom Networking _ All About Sockets)

Reading from and Writing to a Socket (The Java™ Tutorials _ Custom Networking _ All About Sockets)

Ratings: (0)|Views: 5|Likes:
Published by serge_viardot

More info:

Published by: serge_viardot on Aug 04, 2013
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less





Custom Networking
All About Sockets
Reading from and Writing to a Socket
Let's look at a simple example that illustrates how a program can establish a connection to aserver program using the
class and then, how the client can send data to and receivedata from the server through the socket.The example program implements a client,
, that connects to the Echo server. TheEcho server simply receives data from its client and echoes it back. The Echo server is awell-known service that clients can rendezvous with on port 7.
creates a socket thereby getting a connection to the Echo server. It reads inputfrom the user on the standard input stream, and then forwards that text to the Echo server bywriting the text to the socket. The server echoes the input back through the socket to theclient. The client program reads and displays the data passed back to it from the server:
import java.io.*;import java.net.*;public class EchoClient {public static void main(String[] args) throws IOException {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());}out.close();in.close();stdIn.close();echoSocket.close();}}
Note that
both writes to and reads from its socket, thereby sending data to andreceiving data from the Echo server.
Reading from and Writing to a Socket (The Java™ Tutorials > C...http://docs.oracle.com/javase/tutorial/networking/sockets/readin...1 sur 314/07/2013 19:46
Let's walk through the program and investigate the interesting parts. The three statements inthe
block of the
method are critical. These lines establish the socket connectionbetween the client and the server and open a
and a
on thesocket:
echoSocket = new Socket("taranis", 7);out = new PrintWriter(echoSocket.getOutputStream(), true);in = new BufferedReader( new InputStreamReader(echoSocket.getInputStream()));
The first statement in this sequence creates a new
object and names it
constructor used here requires the name of the machine and the port number towhich you want to connect. The example program uses the host name
. This is thename of a hypothetical machine on our local network. When you type in and run this programon your machine, change the host name to the name of a machine on your network. Makesure that the name you use is the fully qualified IP name of the machine to which you want toconnect. The second argument is the port number. Port number 7 is the port on which theEcho server listens.The second statement gets the socket's output stream and opens a
on it.Similarly, the third statement gets the socket's input stream and opens a
onit. The example uses readers and writers so that it can write Unicode characters over thesocket.To send data through the socket to the server,
simply needs to write to the
. To get the server's response,
reads from the
. Therest of the program achieves this. If you are not yet familiar with the Java platform's I/Oclasses, you may wish to readBasic I/O.The next interesting part of the program is the
loop. The loop reads a line at a time fromthe standard input stream and immediately sends it to the server by writing it to the
connected to the socket:
String userInput;while ((userInput = stdIn.readLine()) != null) {out.println(userInput);System.out.println("echo: " + in.readLine());}
The last statement in the
loop reads a line of information from the
connected to the socket. The
method waits until the server echoes the informationback to
. When
prints the information to thestandard output.The
loop continues until the user types an end-of-input character. That is,
reads input from the user, sends it to the Echo server, gets a response from the server, anddisplays it, until it reaches the end-of-input. The
loop then terminates and the programcontinues, executing the next four lines of code:
These lines of code fall into the category of housekeeping. A well-behaved program alwayscleans up after itself, and this program is well-behaved. These statements close the readersand writers connected to the socket and to the standard input stream, and close the socketconnection to the server. The order here is important. You should close any streamsconnected to a socket before you close the socket itself.This client program is straightforward and simple because the Echo server implements asimple protocol. The client sends text to the server, and the server echoes it back. When your
Reading from and Writing to a Socket (The Java™ Tutorials > C...http://docs.oracle.com/javase/tutorial/networking/sockets/readin...2 sur 314/07/2013 19:46

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->