Agenda: Elements of Client Server Computing Networking Basics Understanding Ports and Sockets Java Sockets
Agenda: Elements of Client Server Computing Networking Basics Understanding Ports and Sockets Java Sockets
Agenda: Elements of Client Server Computing Networking Basics Understanding Ports and Sockets Java Sockets
■ Introduction
■ Elements of Client Server Computing
■ Networking Basics
■ Understanding Ports and Sockets
■ Java Sockets
■ Implementing a Server
■ Implementing a Client
■ Sample Examples
■ Conclusions
1
Introduction
2
Internet Applications Serving Local
and Remote Users
PC client
Internet
Server
Local Area Network
PDA
3
Internet & Web as a delivery Vehicle
4
Increased demand for Internet
applications
■ To take advantage of opportunities presented by
the Internet, businesses are continuously seeking
new and innovative ways and means for offering
their services via the Internet.
■ This created a huge demand for software designers
with skills to create new Internet-enabled
applications or migrate existing/legacy applications
on the Internet platform.
■ Object-oriented Java technologies—Sockets,
threads, RMI, clustering, Web services-- have
emerged as leading solutions for creating portable,
efficient, and maintainable large and complex
Internet applications.
5
Elements of C-S Computing
t
es
qu
Re
Client
Server
Network
Re
su
lt
Client machine
Server machine
6
Networking Basics
■ Applications Layer ■ TCP/IP Stack
■ Standard apps
■ HTTP
■ FTP
■ Telnet Application
■ User apps (http,ftp,telnet,…)
■ Transport Layer
■ TCP Transport
■ UDP (TCP, UDP,..)
■ Programming Interface:
■ Sockets Network
■ Network Layer (IP,..)
■ IP
Link
■ Link Layer
■ Device drivers (device driver,..)
7
Networking Basics
8
Networking Basics
9
Understanding Ports
11
Sockets
12
Socket Communication
[a]: a client making a connection request to the server
_
Connection request
port
server
Client
13
Socket Communication
[b]: session established with temporary ports used for two way communication.
server
port
Client
port Connection
14
Sockets and Java Socket Classes
Input/read stream
Socket(“128.250.25.158”, 1254)
It can be host_name like “mandroo.cs.mu.oz.au” 16
Implementing a Server
1. Open the Server Socket:
ServerSocket server;
DataOutputStream os;
DataInputStream is;
server = new ServerSocket( PORT );
2. Wait for the Client Request:
Socket client = server.accept();
3. Create I/O streams for communicating to the client
is = new DataInputStream( client.getInputStream() );
os = new DataOutputStream( client.getOutputStream() );
4. Perform communication with client
Receive from client: String line = is.readLine();
Send to client: os.writeBytes("Hello\n");
5. Close sockets: client.close();
For multithreaded server:
while(true) {
i. wait for client requests (step 2 above)
ii. create a thread with “client” socket as parameter (the thread creates streams (as in step (3)
and does communication as stated in (4). Remove thread once service is provided.
}
17
Implementing a Client
18
A simple server (simplified code)
// SimpleServer.java: a simple server program
import java.net.*;
import java.io.*;
public class SimpleServer {
public static void main(String args[]) throws IOException {
// Register service on port 1254
ServerSocket s = new ServerSocket(1254);
Socket s1=s.accept(); // Wait and accept a connection
// Get a communication stream associated with the socket
OutputStream s1out = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream (s1out);
// Send a string!
dos.writeUTF("Hi there");
// Close the connection, but not the server socket
dos.close();
s1out.close();
s1.close();
}
}
19
A simple client (simplified code)
// SimpleClient.java: a simple client program
import java.net.*;
import java.io.*;
public class SimpleClient {
public static void main(String args[]) throws IOException {
// Open your connection to a server, at port 1254
Socket s1 = new Socket("mundroo.cs.mu.oz.au",1254);
// Get an input file handle from the socket and read the input
InputStream s1In = s1.getInputStream();
DataInputStream dis = new DataInputStream(s1In);
String st = new String (dis.readUTF());
System.out.println(st);
// When done, just close the connection and exit
dis.close();
s1In.close();
s1.close();
}
}
20
Run
■ Run Server on mundroo.cs.mu.oz.au
■ [raj@mundroo] java SimpleServer &
21
Socket Exceptions
try {
Socket client = new Socket(host, port);
handleConnection(client);
}
catch(UnknownHostException uhe) {
System.out.println("Unknown host: " + host);
uhe.printStackTrace();
}
catch(IOException ioe) {
System.out.println("IOException: " + ioe);
ioe.printStackTrace();
}
22
ServerSocket & Exceptions
23
Server in Loop: Always up
// SimpleServerLoop.java: a simple server program that runs forever in a single thead
import java.net.*;
import java.io.*;
public class SimpleServerLoop {
public static void main(String args[]) throws IOException {
// Register service on port 1234
ServerSocket s = new ServerSocket(1234);
while(true)
{
Socket s1=s.accept(); // Wait and accept a connection
// Get a communication stream associated with the socket
OutputStream s1out = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream (s1out);
// Send a string!
dos.writeUTF("Hi there");
// Close the connection, but not the server socket
dos.close();
s1out.close();
s1.close();
}
}
}
24
Multithreaded Server: For Serving
Multiple Clients Concurrently
Server
Threads
■ Internet
Client 2 Process
25
Conclusion
26
Connection request
server port
Client
server
port
Client
port Connection
■ [b]: session established with temporary ports used for two way communication.
27