SERVER/CLIENT NETWORKING AT JAVA PLATFORM

Similar documents
Networking with java (socket programming) a brief study

JAVA - NETWORKING (SOCKET PROGRAMMING)

Networking and Security

Object-Oriented Programming in Java

Info 408 Distributed Applications programming 2 nd semester of 2017/2018 Credits: 5 Lecturer: Dr. Antoun Yaacoub

TCP and UDP Socket Programming in JAVA TCP Socket Programming 1. Write code for Client and save in GreetingClient.java

Distributed Systems Recitation 2. Tamim Jabban

CSCD 330 Network Programming Spring 2018

Distributed Systems Recitation 2. Tamim Jabban

A socket is a software endpoint that establishes bidirectional communication between a server program and one or more client programs.

Socket 101 Excerpt from Network Programming

OBJECT ORIENTED PROGRAMMING

Outlines. Networking in Java. Internet hardware structure. Networking Diagram. IP Address. Networking in Java. Networking basics

Lecture 3. Java Socket Programming. TCP, UDP and URL

Advanced Java Programming. Networking

Lecture 3: Socket Programming

JAVA SOCKET PROGRAMMING

Networking Basics. network communication.

CS 355. Computer Networking. Wei Lu, Ph.D., P.Eng.

Distributed Systems. 3. Access to the Transport Layer. Werner Nutt

Interprocess Communication

Previous lecture: threads G51PRG: Introduction to Programming Second semester Lecture 12 URL

AJP: Chapter 2 Networking: 18 marks

Networking: IPv6, UDP and TCP. Network Programming in Java UDP and TCP

NETWORKING: 7.1 INTRODUCTION TO NETWORKING.

COMP 213. Advanced Object-oriented Programming. Lecture 20. Network Programming

Unit 1 Java Networking

Week 13 Lab - Exploring Connections & Remote Execution

Principles of Software Construction. Introduction to networks and distributed systems School of Computer Science

Introduction to Sockets 9/25/14

Basic Java Network Programming. CS211 July 30 th, 2001

Communication in Distributed Systems: Sockets Programming. Operating Systems

SOCKETS. COMP750 Distributed Systems

TCP connections. Fundamentals of Internet Connections Objectives. Connect to an Echo port. java.net.socket

Java Support for developing TCP Network Based Programs

Introduction to Socket Programming

JAVA Network API. 2 - Connection-Oriented vs. Connectionless Communication

Java Networking (sockets)

TCP Networking in Java. Some reminders

Networks and Internet Programming

C18: Network Fundamentals and Reliable Sockets

Internet Protocol. Chapter 5 Protocol Layering. Juho Kim Graduate School of Information & Technology Sogang University

Socket Programming in Java

Connecting to a Server Implementing Servers Making URL Connections Advanced Socket Programming

Chapter 2 Applications and

Pieter van den Hombergh Richard van den Ham. March 17, 2018

Network. Dr. Jens Bennedsen, Aarhus University, School of Engineering Aarhus, Denmark

Unit 9: Network Programming

Transport layer protocols. Lecture 15: Operating Systems and Networks Behzad Bordbar

Introduction to Java.net Package. CGS 3416 Java for Non Majors

Distributed Systems COMP 212. Lecture 8 Othon Michail

Communication Paradigms

Info 408 Distributed Applications programming 2 nd semester of Credits: 5 Lecturer: Dr. Antoun Yaacoub

31 Network Programming

Internet Technology 2/7/2013

CSCD 330 Network Programming Spring 2018

Java Basics 5 - Sockets. Manuel Oriol - May 4th, 2006

CSCD 330 Network Programming Winter 2019

Redes de Computadores (RCOMP)

Networking in Java. Java Fundamentals. Dmitri Gabbasov Tartu 2016

Sockets: Network io HOM DOS HVD HEE. Sockets, Object Streams and Serialization. Sockets. Sockets: Network io HOM DOS HVD HEE

Chapter 11. Application-Layer Elements Ports

Topic 10: Network Programming

World Scientific Research Journal (WSRJ) ISSN: The Implementation of Tcp Socket Programming based on Java

URL Kullanımı Get URL

Chapter 2: outline. 2.1 principles of network applications. 2.6 P2P applications 2.7 socket programming with UDP and TCP

Chapter 2 Application Layer

What HTTP is : it forms elements (.html..xml) with programs (processes) running on the server (e.g. java) and on clients (e.g. javascript), cookies).

Redesde Computadores(RCOMP)

Java A.1 TCP/IP TCP. TCP_RO.java import java.net.*; import java.io.*;

CSC 4900 Computer Networks: P2P and Sockets

CSE 461 Module 11. Connections

Java.net Package and Classes(Url, UrlConnection, HttpUrlConnection)

CS September 2017

C19: User Datagram and Multicast

Java 6. Network programming

CPSC 441 UDP Socket Programming. Department of Computer Science University of Calgary

Ch.4 Internet Addresses

Assignment 1. Due date February 6, 2007 at 11pm. It must be submitted using submit command.

Sockets: Network io HOM HVD. Sockets, Object Streams and Serialization. Sockets. Sockets: Network io HOM HVD

Java for Interfaces and Networks

Chapter 2 outline. 2.1 Principles of app layer protocols

Writing a Protocol Handler

protocols September 15,

THIS EXAMINATION PAPER MUST NOT BE REMOVED FROM THE EXAMINATION ROOM

Principles, Models and Applications for Distributed Systems M

Chapter 4: Processes

CSCD 330 Network Programming

JAVA NETWORK PROGRAMMING USING SOCKET

Socket Programming(TCP & UDP) Sanjay Chakraborty

CPSC 441 Tutorial - 11 UDP Socket Programming Department of Computer Science University of Calgary

Networking. Lecture 25 ish? COP 3252 Summer July 11, 2017

Java (Networking) 40.1 Introduction HTTP protocol

Introduction to Network Programming using Java

Network Programming Benoît Garbinato

CSCD 330 Network Programming

Java Programming Language Advance Feature

Lab 10: Sockets 12:00 PM, Apr 4, 2018

CS2 Advanced Programming in Java note 8

TRIBHUVAN UNIVERSITY INSTITUTE OF ENGINEERING PULCHOWK CAMPUS DEPARTMENT OF ELECTRONICS AND COMPUTER ENGINEERING. A Report On MARRAIGE

Transcription:

SERVER/CLIENT NETWORKING AT JAVA PLATFORM Vibhu Chinmay, Shubham Sachdeva Student (B.tech5 th sem) Department of Electronics and Computers Engineering Dronacharya College of Engineering, Gurgaon-123506, India Abstract: Socket programming furnish the communication mechanism between the two systems using TCP. A client program itself makes a socket on its end of the communication and tries to connect that socket to a server. When the connection is made, the server creates a object of socket on its end of the communication. The client server can now easily communicate by writing to and reading from the socket. The java.net.socket class represents a socket, and the java.net.serversocket class provides a mechanism for the server program to listen for clients and can make communication easily with them. 1. NETWORKING 1.1. Socket Overview I. INTRODUCTION A socket is one end-point of a two-way communication link between two programs running on the network. A server application normally listens to a specific port waiting for connection requests from a client. When a connection request arrives, the client and the server establish a dedicated connection over which they can communicate. During the connection process, the client is assigned a local port number, and binds a socket to it. The client talks to the server by writing to the socket and gets information from the server by reading from it. Similarly, the server gets a new local port number (it needs a new port number so that it can continue to listen for connection requests on the original port). The server also binds a socket to its local port and communicates with the client by reading from and writing to it. The client and the server must agree on a protocol-- that is, they must agree on the language of the information transferred back and forth through the socket. 1.2. Client or Server You often hear the term client/server mentioned in the context of networking. It seems complicated when you read about it in corporate marketing statements, but it is actually quite simple. The client server model of computing is a distributed application that partitions tasks or workloads between the providers of a resource or service, called servers, and service requesters, called clients. Often clients and servers communicate over a computer network on separate hardware, but both client and server may reside in the same system. A server machine is a host that is running one or more server programs which share their resources with clients. A client does not share any of its resources, but requests a server s content or service function. Clients therefore initiate communication sessions with servers which await incoming requests. The power grid of the house is the server, and the lamp is a power client. The server is a permanently available resource, while the client is free to unplug after it is has been served. In Berkeley sockets, the notion of a socket allows a single computer to serve many different clients at once, as well as serving many different types of information. This feat is managed by the introduction of a port, which is a numbered socket on a particular machine. A server process is said to listen to a port until a client connects to it. A server is allowed to accept multiple clients connected to the same port number, although each session is unique. To manage multiple client connections, a server process must be multithreaded or have some other means of multiplexing the simultaneous I/O. Here s an IJIRT 100840 INTERNATONAL JOURNAL OF INNOVATIVE RESEARCH IN TECHNOLOGY 1413

example of a client requesting a single file, /index.html, and the server replying that it has successfully found the file and is sending it to the client: Server Client Listens to port 80. Connects to port 80. Writes GET Accepts the connection. /index.html Reads up until the second endof-line (\n). HTTP/1.0\n\n. Sees that GET is a known command and that HTTP/1.0 is a valid protocol version. Reads a local file called /index.html. Writes HTTP/1.0 200 200 means here OK\n\n. comes the file. Copies the contents of the file Reads the contents into the socket. of the file and Displays it. Hangs up. Hangs up. Obviously, the HTTP protocol is much more complicated than this example shows, but this is an actual transaction that you could have with any web server near you. 1.3. Proxy Servers A server that sits between a client application, such as a Web Browser, and a real server. It intercepts all requests to the real server to see if it can fulfill the requests itself. If not, it forwards the request to the real server. Proxy servers have two main purposes: Improve Performance: Proxy servers can dramatically improve performance for groups of users. This is because it saves the results of all requests for a certain amount of time. Consider the case where both user X and user Y access the WORLD WIDE WEB through a proxy server. First user X requests a certain web page, which we'll call Page 1. Sometime later, user Y requests the same page. Instead of forwarding the request to the Web server where Page 1 resides, which can be a timeconsuming operation, the proxy server simply returns the Page 1 that it already fetched for user X. Since the proxy server is often on the same network as the user, this is a much faster operation. Real proxy servers support hundreds or thousands of users. The major online services such as MSN and Yahoo, for example, employ an array of proxy servers. Filter Requests: Proxy servers can also be used to filter requests. For example, a company might use a proxy server to prevent its employees from accessing a specific set of web sites 2.1. The Networking Classes & Interfaces The classes contained in the java.net package are listed here: Authenticator (Java 2) InetSocketAddre ss (Java 2, v1.4) SocketImpl ContentHandler JarURLConnecti on (Java 2) SocketPermission DatagramPacket MulticastSocket URI (Java 2, v1.4) URLClassLoader DatagramSocket NetPermission (Java 2) DatagramSocket Impl NetworkInterface (Java 2, v1.4) URL HttpURLConne ction PasswordAuthent ication (Java 2) URLConnection InetAddress ServerSocket URLDecoder (Java 2) Inet4Address (Java 2, v1.4) Socket URLEncoder Inet6Address (Java 2, v1.4) SocketAddress (Java 2, v1.4) URLStreamHandle r Some of these are to support the new IPv6 addressing scheme. Others provide some added flexibility to the original java.net package. Java 2, version 1.4 also added functionality, such as support for the new I/O classes, to several of the preexisting networking classes. Most of the additions made by Java 2, version 1.4 are beyond the scope of this chapter, but three new classes, Inet4Address, Inet6Address, and URI, are briefly discussed at the end. The java.net package s interfaces are listed here: ContentHandle rfactory FileNameMap SocketImplFact URLStreamHa ory ndlerfactory DatagramSock SocketOptions etimplfactory (added by Java 2, v1.3) IJIRT 100858 INTERNATONAL JOURNAL OF INNOVATIVE RESEARCH IN TECHNOLOGY 1414

2.2. ServerSocket Class Method The java.net.serversocket class is used by server applications to obtain a port and listen for client requests. The ServerSocket class has four constructors: public ServerSocket(int port) throws Attempts to create a server socket bound to the specified port. An exception occurs if the port is already bound by another application. public ServerSocket(int port, int backlog) throws Similar to the previous constructor, the backlog parameter specifies how many incoming clients to store in a wait queue. public ServerSocket(int port, int backlog, InetAddress address) throws Similar to the previous constructor, the InetAddress parameter specifies the local IP address to bind to. The InetAddress is used for servers that may have multiple IP addresses, allowing the server to specify which of its IP addresses to accept client requests on public ServerSocket() throws number in a constructor and let the server find a port for you. public Socket accept() throws Waits for an incoming client. This method blocks until either a client connects to the server on the specified port or the socket times out, assuming that the time-out value has been set using the setsotimeout() method. Otherwise, this method blocks indefinitely public void setsotimeout(int timeout) Sets the time-out value for how long the server socket waits for a client during the accept(). public void bind(socketaddress host, int backlog) Binds the socket to the specified server and port in the SocketAddress object. Use this method if you instantiated the ServerSocket using the noargument constructor. When the ServerSocket invokes accept (), the method does not return until a client connects. After a client does connect, the ServerSocket creates a new Socket on an unspecified port and returns a reference to this new Socket. A TCP connection now exists between the client and server, and communication can begin. Creates an unbound server socket. When using this constructor, use the bind() method when you are ready to bind the server socket If the ServerSocket constructor does not throw an exception, it means that your application has successfully bound to the specified port and is ready for client requests. Here are some of the common methods of the ServerSocket class: public int getlocalport() Returns the port that the server socket is listening on. This method is useful if you passed in 0 as the port 2.3. Socket Class Method The java.net.socket class represents the socket that both the client and server use to communicate with each other. The client obtains a Socket object by instantiating one, whereas the server obtains a Socket object from the return value of the accept() method. The Socket class has five constructors that a client uses to connect to a server: public Socket(String host, int port) throws UnknownHostException,. This method attempts to connect to the specified server at the specified port. If this constructor does not throw an exception, the connection is successful and the client is connected to the server. public Socket(InetAddress host, int port) throws IJIRT 100840 INTERNATONAL JOURNAL OF INNOVATIVE RESEARCH IN TECHNOLOGY 1415

This method is identical to the previous constructor, except that the host is denoted by an InetAddress object. public Socket(String host, int port, InetAddress localaddress, int localport) throws. Connects to the specified host and port, creating a socket on the local host at the specified address and port. public Socket(InetAddress host, int port, InetAddress localaddress, int localport) throws. This method is identical to the previous constructor, except that the host is denoted by an InetAddress object instead of a String public Socket() Creates an unconnected socket. Use the connect() method to connect this socket to a server. When the Socket constructor returns, it does not simply instantiate a Socket object but it actually attempts to connect to the specified server and port. Some methods of interest in the Socket class are listed here. Notice that both the client and server have a Socket object, so these methods can be invoked by both the client and server. public void connect(socketaddress host, int timeout) throws This method connects the socket to the specified host. This method is needed only when you instantiated the Socket using the no-argument constructor. public InetAddress getinetaddress() This method returns the address of the other computer that this socket is connected to. public int getport() Returns the port the socket is bound to on the remote machine. public int getlocalport() Returns the port the socket is bound to on the local machine. public SocketAddress getremotesocketaddress() Returns the address of the remote socket. public InputStream getinputstream() throws Returns the input stream of the socket. The input stream is connected to the output stream of the remote socket. public OutputStream getoutputstream() throws Returns the output stream of the socket. The output stream is connected to the input stream of the remote socket public void close() throws Closes the socket, which makes this Socket object no longer capable of connecting again to any server 2.4. InetAddress Class Method This class represents an Internet Protocol (IP) address. Here are following useful methods which you would need while doing socket programming: static InetAddress getbyaddress(byte[] addr) Returns an InetAddress object given the raw IP address. static InetAddress getbyaddress(string host, byte[] addr) Create an InetAddress based on the provided host name and IP address. static InetAddress getbyname(string host) Determines the IP address of a host, given the host's name. String gethostaddress() Returns the IP address string in textual presentation. String gethostname() Gets the host name for this IP address. static InetAddress InetAddress getlocalhost() Returns the local host. String tostring() Converts this IP address to a String. byte[] getaddress( ) Internet addresses are looked up in a series of hierarchically cached servers. That means that your local computer might know a particular name-to-ipaddress mapping automatically, such as for itself and nearby servers. For other names, it may ask a local DNS server for IP address information. If that server IJIRT 100858 INTERNATONAL JOURNAL OF INNOVATIVE RESEARCH IN TECHNOLOGY 1416

doesn t have a particular address, it can go to a remote site and ask for it. This can continue all the way up to the root server, called InterNIC (internic.net). This process might take a long time, so it is wise to structure your code so that you cache IP address information locally rather than look it up repeatedly. 3. TCP/IP SOCKETS 3.1. TCP/IP Client Sockets TCP/IP sockets are used to implement reliable, bidirectional, persistent, point-to- point, stream-based connections between hosts on the Internet. A socket can be used to connect Java s I/O system to other programs that may reside either on the local machine or on any other machine on the Internet. There are two kinds of TCP sockets in Java. One is for servers, and the other is for clients. The ServerSocket class is designed to be a listener, which waits for clients to connect before doing anything. The Socket class is designed to connect to server sockets and initiate protocol exchanges. The creation of a Socket object implicitly establishes a connection between the client and server. There are no methods or constructors that explicitly expose the details ofestablishing that connection. Here are two constructors used to create client sockets: Socket(String hostname, int port) Creates a socket connecting the local host to the Named host and port; can throw an UnknownHostException or an. Socket(InetAddress ipaddress, int port) Creates a socket using a preexisting netaddress object and a port; can throw an. A socket can be examined at any time for the address and port information associated with it, by use of the following methods: InetAddress getinetaddress( )Returns the InetAddress associated with the Socket object. nt getport( ) Returns the remote port to which this Socket object is connected. int getlocalport( ) Returns the local port to which this Socket object is connected. streams associated with it. Each of these methods can throw an if the sockets have been invalidated by a loss of connection on the Net. These streams are used exactly like the I/O streams to send and receive data. InputStream getinputstream( ) Returns the InputStream associated with the invoking socket. OutputStream getoutputstream( ) Returns the OutputStream associated with the invoking socket. THE JAVA LIBRARY Java 2, version 1.4 added the getchannel( ) method to Socket. This method returns a channel connected to the Socket object. Channels are used by the new I/O classes contained in java.nio. 3.2. TCP/IP Server Sockets The ServerSocket class is used to create servers that listen for either local or remote client programs to connect to them on published ports. Since the Web is driving most of the activity on the Internet, this section develops an operational web (http) server. ServerSockets are quite different from normal Sockets. When you create a ServerSocket, it will register itself with the system as having an interest in client connections. The constructors for ServerSocket reflect the port number that you wish to accept connections on and, optionally, how long you want the queue for said port to be. The queuelength tells the system how many client connections it can leave pending before it should simply refuse connections. The default is 50. The constructors might throw an under adverse conditions. Here are the constructors: ServerSocket(int port) Creates server socket on the specified port with a queue length of 50. Creates a server socket on the specified port with a maximum queue length of maxqueue. ServerSocket(int port, int maxqueue, InetAddress localaddress) Creates a server socket on the specified port with a maximum queue length of maxqueue. On a multihomed host,localaddress specifies the IP address to which this socket binds. ServerSocket has a method calledaccept( ), which is a blocking call that will wait for a client to initiate communications, and then return with a normal Once the Socket object has been created, it can also be examined to gain access to the input and output IJIRT 100840 INTERNATONAL JOURNAL OF INNOVATIVE RESEARCH IN TECHNOLOGY 1417

Socket that is then used for communication with the client. Java 2, version 1.4 added thegetchannel( ) method to ServerSocket. This method returns achannel connected to the ServerSocket object. Channels are used by the new I/O classes contained in java.nio. 4. EXAMPLES 4.1. Socket Client Example The following Greeting Client is a client program that connects to a server by using a socket and sends a greeting, and then waits for a response. // File Name GreetingClient.java import java.net.*; import java.io.*; publicclassgreetingclient publicstaticvoid main(string[] args) String servername =args[0]; int port =Integer.parseInt(args[1]); try System.out.println("Connecting to "+ servername +" on port "+ port); Socket client =newsocket(servername, port); System.out.println("Just connected to " +client.getremotesocketaddress()); OutputStream outtoserver =client.getoutputstream(); DataOutputStreamout= newdataoutputstream(outtoserver); out.writeutf("hello from " +client.getlocalsocketaddress()); InputStream infromserver =client.getinputstream(); DataInputStreamin= newdatainputstream(infromserver); System.out.println("Server says "+in.readutf()); client.close(); catch( e) e.printstacktrace(); 4.2. Socket Server Example The following Greeting Server program is an example of a server application that uses the Socket class to listen for clients on a port number specified by a command-line argument: // File Name GreetingServer.java import java.net.*; import java.io.*; publicclassgreetingserverextendsthread privateserversocket serversocket; publicgreetingserver(int port)throws serversocket=newserversocket(port); serversocket.setsotimeout(10000); publicvoid run() while(true) try System.out.println("Waiting for client on port "+ serversocket.getlocalport()+"..."); Socket server =serversocket.accept(); System.out.println("Just connected to " +server.getremotesocketaddress()); DataInputStreamin= newdatainputstream(server.getinputstream()); System.out.println(in.readUTF()); DataOutputStreamout= newdataoutputstream(server.getoutputstream()); out.writeutf("thank you for connecting to " +server.getlocalsocketaddress()+"\ngoodbye!"); server.close(); catch(sockettimeoutexception s) IJIRT 100858 INTERNATONAL JOURNAL OF INNOVATIVE RESEARCH IN TECHNOLOGY 1418

System.out.println("Socket timed out!"); break; catch( e) e.printstacktrace(); break; publicstaticvoid main(string[] args) int port =Integer.parseInt(args[0]); try Thread t =newgreetingserver(port); t.start(); catch( e) e.printstacktrace(); 4.http://docs.oracle.com/javase/tutorial/networking/so ckets/clientserver.html Compile client and server and then start server as follows: $ javagreetingserver6066 Waitingfor client on port 6066... Check client program as follows: $ javagreetingclient localhost 6066 Connecting to localhost on port 6066 Just connected to localhost/127.0.0.1:6066 Server says Thank you for connecting to /127.0.0.1:6066 REFERENCES 1.http://ijera.com/papers/Vol3_issue1/GU311299130 5.pdf 2.Mc Graw Hill The Complete Reference: Java 2 Fifth Edition 3.http://www.tutorialspoint.com/java/java_networkin g.htm IJIRT 100840 INTERNATONAL JOURNAL OF INNOVATIVE RESEARCH IN TECHNOLOGY 1419