1 Network Programming Introduction zBased on Classes in the java.net package zLecture focuses on:...

Post on 23-Dec-2015

223 views 0 download

Transcript of 1 Network Programming Introduction zBased on Classes in the java.net package zLecture focuses on:...

1

Network ProgrammingIntroduction

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

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

TCP and UDP

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) formjava.sun.com

“Dotted quad” form:123.255.28.120

static InetAddress.getByName() produces java object containing address

Servers and Clients

Two machines must connectServer waits for connectionClient 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 MachineNot 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 2-way 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 classesBufferedReader 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