Download Network Programming

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Network Programming
Introduction
Based on Classes in the java.net package
Lecture focuses on:
TCP and UDP
Network programming basics
Identifying a machine
Servers and Clients
Ports and sockets
Data transfer using sockets
1
TCP and UDP
Lots of java programs use Transmission Control
Protocol (TCP)
Connection-based (where java stream sockets
provides continuous data stream), reliable, data
streams will always get there. Also high
overhead. We will focus on TCP/IP sockets.
User Datagram Protocol (UDP) is not
connection-based (connectionless service with
datagram sockets allowing one message, an
unreliable protocol which is much faster, but the
message won’t always get there
Network Programming
Basics
•The classes in java.net: Java
programs can use TCP or UDP to
communicate over the Internet. The
URL, URLConnection (for Web
applications), Socket, and
ServerSocket (client-server
applications) classes all use TCP to
communicate over the network.
•The DatagramPacket,
DatagramSocket, and
MulticastSocket classes are for
use with UDP.
Network Programming
Basics
Historically error-prone, difficult, complex
JAVA has complete network package,
java.net
I/O stream library works quite well for
TCP/IP
Threading is also very useful and
relatively easy here
Identifying a Machine
Uniquely identify a machine from all the
others in the world
IP (Internet Protocol) address that can
exist in two forms:
Identify a Machine
(Continue)
DNS(Domain Name Service) form
java.sun.com
“Dotted quad” form:
123.255.28.120
 static InetAddress.getByName()
produces java object containing
address
Servers and Clients
Two machines must connect
Server waits for connection
Client initiates connection (create socket)
Once the connection is made, server &
client look identical
Testing w/o a network
For testing your program, you can do it
w/o network. (server & client on same
machine)
Localhost: the IP address for testing
without a network
Three ways to identify:
Test w/o networking
(Continue)
InetAddress
 addr=InetAddress.getByName(null);
Equivalently:
InetAddress.getByName(“localhost”);
Or using the reserved IP number for the
loopback:
InetAddress.getByName(“127.0.0.1”);
Port number
IP address isn’t enough to identify a
unique server
many servers can exist on one machine
port number: Unique in a Machine
Not a physical location, but a software
abstraction to represent a service
Port number (Continue)
When set up client and server, you must
specify IP address and port.
Port number range: 0 to 65,535
1-1024 are reserved, others may be used.
Sockets
Software abstraction
used to represent the
connection between
two machines
Socket is the actual 2way connector.
Sockets
 The following sequence establishes a
socket from the client class
InetAddress addr =
InetAddress.getByName(null);
Socket socket =
new Socket(addr, 8080);
Sockets
 At the server class, the following
establishes the server port, and waits for
a client request to establish a socket
ServerSocket s =
new ServerSocket(8080);
Socket socket = s.accept();
Data transfer using sockets
Once you have a Socket, you call
getInputStream() and getOutputStream()
to produce the corresponding
InputStream and OutputStream objects
You can convert these to readers and
writers, wrap them in a BufferedReader or
BufferedWriter and PrintWriter
Data transfer using sockets
(continue)
 At the server and client classes
BufferedReader in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
PrintWriter out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())),true);
Data transfer using sockets
(continue)
From then on, it’s like reading and writing any
other I/O stream!
while (true) {
String str = in.readLine();
if (str.equals("END")) break;
System.out.println("Echoing: " + str);
out.println(str);
}
Example: JabberClient
JabberServer