Client Server in Java
Joseph Bergin Pace University
Joseph Bergin
9/4/2001
Framework
!
Server (application)
Java or other language
Server
listens 4404
Client (applet...)
Java...
Client
Socket
Connects Server and Client The server provides a service by listening on a port
Joseph Bergin
9/4/2001
Initializing a Connection
!
Socket
Two way link between client and server
Server
listens 4404
Client Connects to the port at the Server
This creates the socket
Client
Connect 4404 on Server
Joseph Bergin
9/4/2001
Server Creates Service
ServerSocket servsock = new ServerSocket(4404); // Create a new service at a port while (true) { // wait for the next client connection Socket sock=servsock.accept(); // Listen // Blocks until a client connects. // handle connection ... }
Joseph Bergin
9/4/2001
Client Connects
Socket sock = new Socket("foo.bar.edu", 4404); // Connect to a Service at a site. // Get I/O streams from the socket in = new BufferedReader(new InputStreamReader ( sock.getInputStream() )); out = new PrintStream( sock.getOutputStream() ); String fromServer = in.readLine(); // Get initial string String reply = ... ... out.println(reply); out.flush();
Joseph Bergin 9/4/2001 5
Server Responds
while (true) { // wait for the next client connection Socket sock=servsock.accept(); // Listen // Blocks until a client connects. PrintStream out = new PrintStream( sock.getOutputStream() ); BufferedReader in = new BufferedReader( new InputStreamReader (sock.getInputStream() )); // Send our initial message String initial = ...; out.println(initial ); out.flush(); ... }
Joseph Bergin 9/4/2001 6
Either Terminates Connection
... sock.close();
Joseph Bergin
9/4/2001
Notes
Can have several sockets on one port ! Each socket should have its own thread
!
Reading and writing can even be in different threads
Should perhaps have a limit on number of threads/sockets handled ! Listening thread creates others.
!
Joseph Bergin 9/4/2001 8
Advanced Techniques
!
Can broadcast to all open sockets
e.g. Manage a multi-user game.
Server can connect to other services and act as an intermediary filter
e.g. This is how you get gopher and ftp service from an http server.
Streams dont have to be text streams
9/4/2001 9
Joseph Bergin