Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking...
Transcript of Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking...
![Page 1: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/1.jpg)
Networking with Java
CSc 335
Object-Oriented Programming and Design
Craig Barber, Ian Vasquez, Rick Snodgrass, Rick Mercer
![Page 2: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/2.jpg)
Networking
Refactoring Y-2Refactoring Y-2Refactoring Y-2
ConcurrencyNetworksSerialization
Javadoc
JUnit
Eclipse
Debugging
Testing &
Maintaing
Large
Programs
Teams
Reading
others’
code
MVC
Observer
Observable
Design
Patterns
UML
Class
Diagrams
Inheritance
Hierarchy
Coupling/
Cohesion
OO Design
PITL
Sequence
Diagrams
Package
Diagrams
Anonymous
Classes
Abstract
ClassesPackages
JDK/JRE
Java Language
Compile-Time
Run-Time
Type Resolution
Type Checking
Java Swing
Frameworks
Java API
Inversion
of Control
Layout
Manager
Listeners
Events
I/O
Iterator
Collection
Exceptions
Composite
CommandTemplate
Decorator
N-2
![Page 3: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/3.jpg)
Networking with Java N-3
Outline
• Introduction to Networking Concepts
Client-Server and Peer-to-Peer
Sockets
Streams
![Page 4: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/4.jpg)
Networking with Java N-4
What is “Networking”
• What is “Networking”?
Getting two or more computers to send data (in Java--serialized objects) to each other
Having programs on separate computers interact with one another
• Types of Networking
Client - Server
Many clients connect with one server.
Clients communicate only with server.
Peer-to-Peer
Clients connect to a group of other clients, with no server.
Clients communicating directly with each-other.
![Page 5: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/5.jpg)
Networking with Java N-5
Client - Server Networking
• Advantages:
Easier to implement
Less coordination
involved
Easier to maintain
control of users
• Disadvantage:
Relies on one main
server for entire
operation
![Page 6: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/6.jpg)
Networking with Java N-6
How Can Networking Work?
• Computers connect to each other through links called
sockets, each associated with a single computer.
• A network stream is created by connecting a socket on
one computer to a socket on another computer
• Applications communicate by sending data through
streams to each other
Reading and writing objects over the network employs the
same serialization you used for persistence
![Page 7: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/7.jpg)
Networking with Java N-7
Sockets
• A socket is a connection on one computer used to send
data back and forth
• The application consists of multiple processes, one
running on each computer
• Sockets are created by the process on each computer
• The sockets then establish a connection to each other
One process sets up a server socket to receive a connection.
The other process sets up a client socket to establish the
connection with the server socket.
![Page 8: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/8.jpg)
Networking with Java N-8
Socket-programming using TCP
TCP service: reliable byte stream transfer
process
TCP withbuffers,variables
socket
controlled byapplicationdeveloper
controlled byoperating
system
process
TCP withbuffers,variables
socket
internet
clientserversocket( )
bind( )connect( )
socket( )bind( )listen( )
accept( )send( )
recv( )
close( ) close( )
recv( )send( )
TCP conn. request
TCP ACK
![Page 9: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/9.jpg)
Networking with Java N-9
Outline
• Introduction to Networking Concepts
• Networking in Java
Sockets
Streams
Decorating Streams
• Summary
![Page 10: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/10.jpg)
Networking with Java N-10
Sockets in Java
• Found in java.net package
• java.net.ServerSocket
Accepts new incoming connections
Creates new ServerSocket for each connection
• java.net.Socket
Connects to an existing ServerSocket, through the
network
![Page 11: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/11.jpg)
Sockets in Java
Networking with Java N-11
Host Machine
Process
Client Machine
Process
Server
Socket
Input
Socket
Output
Socket
Socket
Socket
Socket
Input
Socket
Process
Socket
Client Machine
![Page 12: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/12.jpg)
Two new types
Networking with Java N-12
• We'll be using two new types
• java.net.ServerSocket
• java.net.Socket
You can write to and read from a Socket's input and
output streams with readObject and writeObject messages
which makes networked programs easier to develop
![Page 13: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/13.jpg)
Networking with Java N-13
java.net.ServerSocket
• public ServerSocket(int port)
Throws IOException
Creates a ServerSocket to accept new connections at the specified
port
• public Socket accept()
Throws IOException
Waits for an incoming connection, establishes the new connection, and
returns a socket for that connection
Multiple applications can connect to the same ServerSocket
• public void close()
Throws IOException
Closes the server socket.
Does not close open sockets.
![Page 14: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/14.jpg)
Networking with Java N-14
java.net.Socket
• public Socket(String host, int port)
Throws IOException, UnknownHostException
Connects to a server socket at the provided address (host) on the provided
port
• public InputStream getInputStream()
Throws IOException
Returns the input stream from the socket
• public OutputStream getOutputStream()
Throws IOException
Returns the output stream from the socket
• public void close()
Throws IOException
Closes the connection
![Page 15: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/15.jpg)
Networking with Java N-15
Building a Network app
• This app will have one server and only one client (no
Threads needed)
• Build the server first
Need a new ServerSocket (int port)
The accept message to ServerSocket waits for a connection
that knows where the server is and what port it is listening to
int port = 4000; // A port available on lectura soince 2003
ServerSocket socket = new ServerSocket(port);
Socket connection = socket.accept();
![Page 16: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/16.jpg)
Networking with Java N-16
Get the connection's streams
• Let the server communicate with the connection
ObjectOutputStream output
= new ObjectOutputStream(connection.getOutputStream());
ObjectInputStream input
= new ObjectInputStream(connection.getInputStream());
![Page 17: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/17.jpg)
Networking with Java N-17
Let the server read and write in loop
• Let the server communicate with the connection
// Take money from the client's account
BankAccount theClientsAccount = null;
BankAccount theServersAccount = new BankAccount("Greedy", 0.00);
while (true) {
double amount = ((Double) input.readObject()).doubleValue();
if (amount <= 0.0)
break;
theClientsAccount = (BankAccount) input.readObject();
if (theClientsAccount.withdraw(amount))
theServersAccount.deposit(amount);
// Send back the modified object
output.writeObject(theClientsAccount);
}
connection.close();
![Page 18: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/18.jpg)
Networking with Java N-18
Write the Client
• Get the input and output stream to and friom the server
we are connecting to
ObjectOutputStream output
= new ObjectOutputStream(server.getOutputStream());
ObjectInputStream input
= new ObjectInputStream(server.getInputStream());
![Page 19: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/19.jpg)
Networking with Java N-19
Write the Client
• Request a socket connection with the running sever
// This IPAddress is for the machine where this code will run
// We'll run the server and the client on the same machine for now
String IPAddress = "localhost"; // There's no place like home
int port = 4000;
Socket server = new Socket(IPAddress, port);
![Page 20: Networking with Java - University of Arizonamercer/Presentations/~335/17-Networking.pdfNetworking with Java N-7 Sockets •A socket is a connection on one computer used to send data](https://reader030.fdocuments.us/reader030/viewer/2022040401/5e7beedf3066dd18ec007517/html5/thumbnails/20.jpg)
Networking with Java N-20
Let the client read and write in loop
• Let the client communicate with the server// Give money to the server without knowing it
BankAccount myAccount = new BankAccount("Sucker", 5000.00);
boolean done = false;
while (!done) {
String amountAsString = JOptionPane.showInputDialog(
null,
"You've won! Enter desired amount" + " you have "
+ myAccount.getBalance());
double amount = Double.parseDouble(amountAsString);
output.writeObject(new Double(amount));
if (amount > 0) {
output.writeObject(myAccount);
myAccount = (BankAccount) input.readObject();
} else
// The user figured out how to quit
done = true;
}
server.close();